是的,前端開發中,<input type="file">
可以透過設定 multiple
屬性來支援多檔案上傳。 不需要額外的設定,只需要新增這個屬性即可。
以下是幾種常見的實現方式以及一些補充說明:
1. HTML:
<input type="file" id="myFiles" name="myFiles[]" multiple>
multiple
屬性的存在使得使用者可以選擇多個檔案。name="myFiles[]"
非常重要。方括號[]
告訴後端這是一個檔案陣列,方便後端處理。 如果不加方括號,後端可能只能接收到最後一個選擇的檔案。
2. JavaScript (處理選中的檔案):
const fileInput = document.getElementById('myFiles');
fileInput.addEventListener('change', function() {
const files = fileInput.files;
if (files.length > 0) {
for (let i = 0; i < files.length; i++) {
const file = files[i];
console.log(`File name: ${file.name}`);
console.log(`File size: ${file.size}`);
console.log(`File type: ${file.type}`);
// 在這裡可以進行檔案上傳操作,例如使用 FormData 和 fetch 或 XMLHttpRequest
}
} else {
console.log('No files selected.');
}
});
3. 使用 FormData 上傳檔案 (示例):
fileInput.addEventListener('change', function() {
const files = fileInput.files;
const formData = new FormData();
for (let i = 0; i < files.length; i++) {
formData.append('myFiles[]', files[i]); // 注意這裡的 'myFiles[]' 要和後端約定好
}
fetch('/upload', { // 將 '/upload' 替換為你的後端上傳介面
method: 'POST',
body: formData
})
.then(response => response.json())
.then(data => {
console.log('Upload successful:', data);
})
.catch(error => {
console.error('Error uploading files:', error);
});
});
一些額外的考慮:
- 檔案大小限制: 你可能需要在前端或後端限制上傳檔案的大小,以防止使用者上傳過大的檔案。
- 檔案型別限制: 可以使用
accept
屬性來限制使用者可以選擇的檔案型別。 例如:<input type="file" accept="image/*">
只允許選擇圖片檔案。 - 上傳進度顯示: 對於大檔案上傳,顯示上傳進度可以提升使用者體驗。
- 拖放上傳: 可以結合 Drag and Drop API 實現拖放上傳功能,更加方便使用者操作。
- 後端處理: 確保你的後端程式碼能夠正確處理多檔案上傳。
透過以上方法,你可以輕鬆地在前端實現多檔案上傳功能。 記住根據你的具體需求調整程式碼,並與後端做好溝通,確保前後端資料傳輸一致。