JavaScript上傳是Web開發中很常見的操作,它用于將文件從客戶端上傳到服務器端。通常,我們使用表單來實現文件上傳,但是JavaScript也提供了一些API來實現相關功能。
在實現文件上傳時,需要使用元素來選擇文件。例如:
<input type="file" name="fileupload" id="fileupload">
通過獲取選擇的文件對象,我們可以使用XMLHttpRequest對象實現非阻塞式上傳。例如:
var file = document.getElementById('fileupload').files[0]; var xhr = new XMLHttpRequest(); xhr.open('POST', '/upload', true); xhr.send(file);
在使用XMLHttpRequest對象上傳文件時,需要設置Content-Type頭部信息,并且需要將文件轉換為二進制格式。例如:
var file = document.getElementById('fileupload').files[0]; var xhr = new XMLHttpRequest(); xhr.open('POST', '/upload', true); xhr.setRequestHeader('Content-Type', 'multipart/form-data'); xhr.send(new Blob([file], {type: file.type}));
如果想要實現文件上傳進度的實時顯示,可以使用XMLHttpRequest對象的progress事件。例如:
var file = document.getElementById('fileupload').files[0]; var xhr = new XMLHttpRequest(); xhr.open('POST', '/upload', true); xhr.setRequestHeader('Content-Type', 'multipart/form-data'); xhr.upload.onprogress = function(e) { if (e.lengthComputable) { var percentage = Math.round((e.loaded * 100) / e.total); console.log(percentage + '%'); } }; xhr.send(new Blob([file], {type: file.type}));
在使用FormData對象上傳文件時,可以通過設置append方法的第三個參數實現文件上傳進度的實時顯示。例如:
var file = document.getElementById('fileupload').files[0]; var formData = new FormData(); formData.append('file', file, file.name); var xhr = new XMLHttpRequest(); xhr.open('POST', '/upload', true); xhr.upload.onprogress = function(e) { if (e.lengthComputable) { var percentage = Math.round((e.loaded * 100) / e.total); console.log(percentage + '%'); } }; xhr.send(formData);
總結來說,JavaScript提供了多種方法實現文件上傳,開發者可以根據自己的需求選擇不同的API。除了上述方法外,還可以使用第三方庫如jQuery、axios等來簡化上傳操作。