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

JavaScript 圖片大小限制:瀏覽器端無法可靠獲取文件大小,建議配合後端校驗

     編輯:程式設計疑難解答

結論

純前端 JS 無法在所有瀏覽器可靠讀取 `` 選中文件的大小(特別是 IE/舊版移動端)。 僅能在支援 `File API` (HTML5) 的現代瀏覽器中通過 `files[0].size` 獲取。

現代瀏覽器實現(HTML5 File API)

<input type="file" id="imgInput" accept="image/*" />

document.getElementById('imgInput').addEventListener('change', function(e) {
    var file = e.target.files[0];
    if (!file) return;
    
    var sizeKB = file.size / 1024;
    if (sizeKB < 5) { alert('圖片不能小於 5KB'); return; }
    if (sizeKB > 2048) { alert('圖片不能大於 2MB'); return; }
    
    // 繼續預覽/上傳邏輯
    var reader = new FileReader();
    reader.onload = function(e) { previewImg.src = e.target.result; };
    reader.readAsDataURL(file);
});

兼容性現狀

瀏覽器File API 支援備註
IE 10+✅IE9 需 Flash polyfill
Chrome/Firefox/Safari/Edge✅完美支援
舊版移動端 WebView❌無 `files` 屬性

生產級建議:前端攔截 + 後端二次校驗

// 後端
@PostMapping("/upload")
public ResponseEntity upload(@RequestParam MultipartFile file) {
    long size = file.getSize();
    if (size < 5 * 1024) return badRequest("太小");
    if (size > 2 * 1024 * 1024) return badRequest("太大");
    // 保存...
}

Flash 方案(已淘汰,僅作歷史參考)

早期用 `swfupload` / `uploadify` 等 Flash 組件繞過瀏覽器限制,**現代項目勿用**(Flash 2020 年底停止支援、安全隱患、移動端不可用)。

**總結:現代項目直接用 `File API` 做前端即時反饋,後端必做二次校驗,放棄 Flash 兼容。**

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