微信小程序文件上传
微信小程序文件上传
服务器端
const express = require('express');
const app = express();
const path = require('path');
const multer = require('multer');
// 设置存储引擎和文件保存位置
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/'); // 上传的文件将会保存在 uploads/ 目录下
},
filename: function (req, file, cb) {
cb(null, file.originalname); // 保留原始文件名
}
});
// 创建上传对象
const upload = multer({ storage: storage });
// 处理文件上传的路由
app.post('/upload', upload.single('file'), (req, res) => {
// req.file 包含已上传文件的信息
// 构造文件访问路径
const fileUrl = `http://103.242.3.33:3000/${req.file.path}`;
// 返回文件访问路径给客户端
res.json({ fileUrl: fileUrl });
});
// 配置静态文件服务,使上传的文件可以被访问
app.use(express.static(path.join(__dirname, 'uploads')));
// 启动服务器
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
小程序端
upload() {
let that = this;
var fileList = [];
wx.chooseMedia({
count: 9, // 最多可以选择的文件个数
mediaType: ['image', 'video'], // 文件类型,可以指定是图片还是视频,或者两者都有
sourceType: ['album', 'camera'], // 选择图片的来源,可以是相册选择或者相机拍摄
maxDuration: 30, // 视频的最长拍摄时间,单位秒
camera: 'back', // 默认拉起的是前置或者后置摄像头
success(res) {
// 成功后的回调
console.log('回调', res.tempFiles)
res.tempFiles.forEach(file => {
console.log('file', file)
fileList.push(file.tempFilePath)
that.setData({
value: fileList
})
// 遍历选择的文件列表
const tempFilePath = file.tempFilePath;
// 调用上传文件的 API
wx.uploadFile({
header: {
"Content-Type": "multipart/form-data"
},
url: 'http://103.242.3.33:3000/upload/', // 开发者服务器的URL
filePath: tempFilePath, // 要上传文件资源的路径
name: 'file', // 必须填写对应的文件名,这个名字将会在服务器端获取文件时使用
formData: {
'user': 'test' // 附加的表单信息
},
success(uploadRes) {
// 上传成功的处理逻辑
console.log('上传成功', uploadRes);
var data = JSON.parse(uploadRes.data)
// callback(data.response)
// uploadRes.data 包含服务器的响应信息,通常是字符串形式,如果是JSON需要自行解析
},
fail(error) {
// 上传失败的处理逻辑
console.error('上传失败', error);
},
complete() {
// 无论成功与否都会执行的逻辑
}
});
});
},
fail(res) {
// 选择失败后的回调
console.log(res.tempFiles)
},
complete(res) {
// 选择结束后的回调(无论成功或失败都会执行)
console.log(res.tempFiles)
}
})
}
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果