You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.7 KiB
58 lines
1.7 KiB
<form action="/upload" method="post" enctype="multipart/form-data">
|
|
<input type="file" name="file" id="file" multiple />
|
|
<button type="submit" id="upload">上传</button>
|
|
</form>
|
|
<div id="filelist"></div>
|
|
|
|
<script>
|
|
function $(selector) {
|
|
return document.querySelector(selector);
|
|
}
|
|
var uploadEl = $("#upload");
|
|
var filelistEl = $("#filelist");
|
|
var fileEl = $("#file");
|
|
|
|
uploadEl.addEventListener("click", function (e) {
|
|
e.preventDefault();
|
|
|
|
var xmlhttp;
|
|
if (window.XMLHttpRequest) {
|
|
// code for IE7+, Firefox, Chrome, Opera, Safari
|
|
xmlhttp = new XMLHttpRequest();
|
|
} else {
|
|
// code for IE6, IE5
|
|
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
|
|
}
|
|
xmlhttp.open("POST", "/upload", true);
|
|
// 这里不需要自己加,会自己处理
|
|
// xmlhttp.setRequestHeader("Content-Type", "multipart/form-data");
|
|
|
|
if (xmlhttp.upload) {
|
|
//监听上传属性的上传事件,每次上传事件都会执行 progressHandlingFunction
|
|
xmlhttp.upload.addEventListener(
|
|
"progress",
|
|
function (evt) {
|
|
var loaded = evt.loaded;
|
|
var tot = evt.total;
|
|
var per = Math.floor((100 * loaded) / tot); //已经上传的百分比
|
|
},
|
|
false
|
|
);
|
|
//xmlhttp.upload.progress = function(){} 也可以
|
|
}
|
|
|
|
var formData = new FormData();
|
|
for (let i = 0; i < fileEl.files.length; i++) {
|
|
const file = fileEl.files[i];
|
|
formData.append("file", file);
|
|
}
|
|
xmlhttp.send(formData);
|
|
|
|
xmlhttp.onreadystatechange = function () {
|
|
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
|
|
// console.log(xmlhttp.responseText);
|
|
alert("success");
|
|
}
|
|
};
|
|
});
|
|
</script>
|
|
|