在JavaScript中实现头像上传通常涉及前端与后端的交互。以下是基础概念及实现步骤:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>头像上传</title>
</head>
<body>
<form id="uploadForm">
<input type="file" id="avatar" name="avatar" accept="image/*">
<button type="submit">上传</button>
</form>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function() {
$('#uploadForm').on('submit', function(e) {
e.preventDefault();
var formData = new FormData(this);
$.ajax({
url: '/upload', // 后端处理上传的URL
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function(response) {
console.log('上传成功', response);
},
error: function(error) {
console.error('上传失败', error);
}
});
});
});
</script>
</body>
</html>
const express = require('express');
const multer = require('multer');
const path = require('path');
const app = express();
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/'); // 上传文件的存储路径
},
filename: function (req, file, cb) {
cb(null, Date.now() + path.extname(file.originalname)); // 重命名文件
}
});
const upload = multer({ storage: storage });
app.post('/upload', upload.single('avatar'), (req, res) => {
res.send('文件上传成功');
});
app.listen(3000, () => {
console.log('服务器运行在 http://localhost:3000');
});
limits
选项来限制上传文件的大小。const upload = multer({
storage: storage,
limits: { fileSize: 1024 * 1024 * 5 }, // 限制文件大小为5MB
fileFilter: function (req, file, cb) {
if (file.mimetype.startsWith('image/')) {
cb(null, true);
} else {
cb(new Error('只能上传图片文件'));
}
}
});
通过以上步骤,你可以实现一个基本的头像上传功能。根据具体需求,还可以进一步优化和扩展功能。
领取专属 10元无门槛券
手把手带您无忧上云