JavaScript上传多张图片涉及到前端开发中的文件处理和异步通信技术。以下是关于这个问题的基础概念、优势、类型、应用场景以及可能遇到的问题和解决方案的详细解答。
以下是一个简单的多图上传示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>多图上传</title>
</head>
<body>
<input type="file" id="fileInput" multiple>
<button onclick="uploadFiles()">上传图片</button>
<div id="preview"></div>
<script>
function uploadFiles() {
const fileInput = document.getElementById('fileInput');
const files = fileInput.files;
const formData = new FormData();
for (let i = 0; i < files.length; i++) {
formData.append('files[]', files[i]);
}
fetch('/upload', {
method: 'POST',
body: formData
})
.then(response => response.json())
.then(data => {
console.log('上传成功:', data);
})
.catch(error => {
console.error('上传失败:', error);
});
}
</script>
</body>
</html>
XMLHttpRequest
的upload.onprogress
事件或fetch
的替代方案(如Axios)来显示上传进度。function previewFiles() {
const fileInput = document.getElementById('fileInput');
const preview = document.getElementById('preview');
for (let i = 0; i < fileInput.files.length; i++) {
const file = fileInput.files[i];
const reader = new FileReader();
reader.onload = (function(file) {
return function(e) {
const img = document.createElement('img');
img.src = e.target.result;
img.title = file.name;
preview.appendChild(img);
};
})(file);
reader.readAsDataURL(file);
}
}
通过以上方法,可以有效实现多图上传功能,并解决常见的技术问题。
领取专属 10元无门槛券
手把手带您无忧上云