純前端 JS 無法在所有瀏覽器可靠讀取 `` 選中文件的大小(特別是 IE/舊版移動端)。 僅能在支援 `File API` (HTML5) 的現代瀏覽器中通過 `files[0].size` 獲取。
<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("太大");
// 保存...
}
早期用 `swfupload` / `uploadify` 等 Flash 組件繞過瀏覽器限制,**現代項目勿用**(Flash 2020 年底停止支援、安全隱患、移動端不可用)。
**總結:現代項目直接用 `File API` 做前端即時反饋,後端必做二次校驗,放棄 Flash 兼容。**