我有一个express服务,其中有个api是用于上传文件,代码见如下。
export async function upload(req: express.Request, res: express.Response) {
if (!req.files || !req.files.file) {
res.status(400).send('未上传文件');
return;
}
try {
//@ts-ignore
const uploadedFile = req.files.file;
//@ts-ignore
const fileBuffer = uploadedFile.data; // 获取文件的 Buffer
//@ts-ignore
const fileName = uploadedFile.name;
const url = await uploadBuffer(fileBuffer, fileName)
res.status(200).json({
url
})
} catch (ex) {
//@ts-ignore
res.status(500).json({ msg: ex.msg })
}
}
在微信小程序中通过如下代码上传
export async function uploadFile(filePath: string): Promise<string> {
const token = wx.getStorageSync("token")
return new Promise((resolve, reject) => {
wx.uploadFile({
url: env.baseUrl + "/file/upload",
filePath: filePath,
header: {
"Authorization": `Bearer ${token}`
},
name: 'file',
success(res) {
if (res.statusCode == 200) {
const json = JSON.parse(res.data) as { url: string }
resolve(json.url)
return;
}
reject(res.errMsg)
},
fail(e) {
reject(e.errMsg)
}
})
})
}
现在因为一些原因我需要通过微信云托管去提供后端服务,我现在的问题是,我该如何通过callContainer或者其他的方式去上传文件?我不想上传到微信云的文件存储系统,我想通过调用我的后端api去完成文件的上传。
谢谢。
callContainer 有请求大小限制,不建议用于上传文件
可以使用云托管的 https 链路用于上传文件,走的标准 https 协议。