首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JavaScript 讀取本地文件修改時間:僅限 IE ActiveXObject 方案

     編輯:程式設計綜合問答

瀏覽器安全沙箱禁止 JavaScript 直接訪問本地文件系統。僅 IE 支援 通過 ActiveXObject("Scripting.FileSystemObject") 讀取文件屬性 (含修改時間)。現代瀏覽器 (Chrome/Firefox/Edge) 無法實現。

IE 專用完整代碼

<script>
function formatDate(d, fmt) {
    var o = {
        "M+": d.getMonth() + 1, "d+": d.getDate(), "h+": d.getHours(),
        "m+": d.getMinutes(), "s+": d.getSeconds(), "q+": Math.floor((d.getMonth() + 3) / 3),
        "S": d.getMilliseconds()
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (d.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt))
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}

function readFileDate() {
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    var file = fso.GetFile("C:\\test.txt");  // 必須絕對路徑
    var dt = file.DateLastModified;          // 取得修改時間
    alert(formatDate(new Date(dt), 'yyyy.MM.dd.hh:mm:ss'));
}
readFileDate();
</script>

關鍵限制

  • 僅 IE (需啟用「ActiveX 控件與插件」→「對未標記為可安全腳本的 ActiveX 控件初始化並腳本運行」→「提示」或「啟用」)。
  • 需將站點加入「受信任站點」區域。
  • 路徑必須為本地絕對路徑 (C:\...),不支援相對路徑或 URL。

現代替代方案

  1. <input type="file"> + File API:用戶手動選擇文件,讀取 file.lastModified (毫秒時間戳)。
    <input type="file" id="f" />
    document.getElementById('f').onchange = e => {
        var file = e.target.files[0];
        console.log(new Date(file.lastModified).toLocaleString());
    };
    
  2. 後端 API:前端傳文件名/路徑,後端 (Java/Node/Python) 讀取文件系統返回時間。
  3. Electron / Tauri / NW.js:桌面應用框架提供 Node.js fs.stat 完整訪問權限。

總結

純 Web 頁面 無法跨瀏覽器讀取本地文件修改時間。IE ActiveX 方案僅適用於內網受控環境;現代開發請採用文件上傳控件或桌面應用框架。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved