在移动端和PC端使用Ajax上传文件,可以通过构建FormData对象来实现。以下是一个简单的示例代码:
HTML部分(移动端和PC端通用):
<input type="file" id="fileInput" />
<button id="uploadButton">上传</button>
JavaScript部分(移动端和PC端通用):
document.getElementById('uploadButton').addEventListener('click', function() {
var fileInput = document.getElementById('fileInput');
var file = fileInput.files[0]; // 获取文件
var formData = new FormData(); // 创建FormData对象
formData.append('file', file); // 将文件添加到FormData对象中
var xhr = new XMLHttpRequest(); // 创建XMLHttpRequest对象
xhr.open('POST', '/upload-endpoint', true); // 设置请求参数
xhr.onload = function() {
if (this.status == 200) {
console.log('上传成功');
} else {
console.error('上传失败');
}
};
xhr.send(formData); // 发送请求
});
后端处理(以Node.js为例):
const express = require('express');
const multer = require('multer');
const app = express();
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/') // 确保这个文件夹已经存在
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now())
}
})
const upload = multer({ storage: storage })
app.post('/upload-endpoint', upload.single('file'), function (req, res) {
// 文件信息在req.file
// 可以在这里添加处理文件的代码
res.send('文件上传成功');
})
app.listen(3000, function () {
console.log('服务器运行在 http://localhost:3000/');
});
确保服务器端的上传接口(这里是'/upload-endpoint')已经正确设置,并且有足够的权限来处理文件上传。上面的Node.js示例使用了multer
库来简化文件上传的处理。