<input type="file" id="fileInput" />
此外,我們還需要在頁面中顯示一個進度條,我們可以使用HTML5中的progress元素,例如:<progress id="progressBar" max="100"></progress>
2. JavaScript代碼: 接下來,在JavaScript代碼中,我們需要監聽文件輸入框的change事件,并獲取輸入的文件。然后,使用FormData對象來構建一個包含文件的表單數據,并通過Ajax發送到服務器。同時,我們需要在Ajax請求中設置一個回調函數,來獲取已上傳的字節數,并更新進度條的值。例如:3. 后端服務器: 在后端服務器中,我們需要處理上傳文件的請求,并將文件保存在服務器的指定位置。在保存過程中,我們需要統計已上傳的字節數,并返回給前端。例如,在Node.js中,我們可以使用express框架來處理上傳文件的請求,然后使用fs模塊將文件保存在指定路徑下。在保存過程中,我們可以通過讀取文件的字節數來計算上傳的進度,并將進度返回給前端。例如:var fileInput = document.getElementById("fileInput"); var progressBar = document.getElementById("progressBar"); fileInput.addEventListener("change", function() { var file = fileInput.files[0]; var formData = new FormData(); formData.append("file", file); var xhr = new XMLHttpRequest(); xhr.upload.addEventListener("progress", function(e) { if (e.lengthComputable) { var percent = Math.round((e.loaded / e.total) * 100); progressBar.value = percent; } }); xhr.open("POST", "/upload", true); xhr.send(formData); });
總結起來,通過使用Ajax技術,我們可以輕松地實現文件上傳功能,并實時顯示上傳的進度條。無論是在大型的文件上傳還是小型的圖片上傳,這種方式都可以提供更好的用戶體驗。通過以上的步驟,您可以快速掌握如何使用Ajax來實現上傳顯示進度條的功能,為您的應用增添更多的價值。app.post("/upload", function(req, res) { var file = req.files.file; var filepath = "path/to/save/file"; var uploadedBytes = 0; var totalBytes = file.size; var reader = fs.createReadStream(file.path); var writer = fs.createWriteStream(filepath); reader.on("data", function(chunk) { uploadedBytes += chunk.length; var percent = Math.round((uploadedBytes / totalBytes) * 100); res.write(percent.toString()); }); reader.on("end", function() { res.end(); }); reader.pipe(writer); });