JavaScript 实现上传图片功能主要涉及以下几个基础概念:
以下是一个简单的单文件上传示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Image Upload</title>
</head>
<body>
<input type="file" id="fileInput" accept="image/*">
<button id="uploadButton">Upload</button>
<div id="status"></div>
<script src="script.js"></script>
</body>
</html>document.getElementById('uploadButton').addEventListener('click', function() {
const fileInput = document.getElementById('fileInput');
const file = fileInput.files[0];
if (file) {
uploadImage(file);
} else {
document.getElementById('status').innerText = 'No file selected.';
}
});
function uploadImage(file) {
const formData = new FormData();
formData.append('image', file);
fetch('/upload', {
method: 'POST',
body: formData
})
.then(response => response.json())
.then(data => {
document.getElementById('status').innerText = `Upload successful: ${data.message}`;
})
.catch(error => {
document.getElementById('status').innerText = `Error: ${error.message}`;
});
}const express = require('express');
const multer = require('multer');
const app = express();
const upload = multer({ dest: 'uploads/' });
app.post('/upload', upload.single('image'), (req, res) => {
if (!req.file) {
return res.status(400).json({ message: 'No file uploaded.' });
}
res.json({ message: 'File uploaded successfully.' });
});
app.listen(3000, () => {
console.log('Server started on http://localhost:3000');
});accept="image/*" 属性限制输入为图片。multer 的 limits 选项:multer 的 limits 选项:XMLHttpRequest 的 upload.onprogress 事件:XMLHttpRequest 的 upload.onprogress 事件:通过以上步骤和示例代码,可以实现一个基本的图片上传功能,并处理一些常见问题。