这里以一个单文件上传为例子,多图多文件同理,循环单图处理逻辑即可。
背景
前端vue上传图片文件(base64格式)到服务器,并获取返回的服务器资源存储路径
传入参数
{
"queryStringParameters":{
"file":"单图文件临时src的base64编码内容"
}
}
**注意:**请求体问题!
在云函数中,请求体(body)有时会出现在`queryStringParameters`中,而不是在`body`中,可能是因为请求的 Content-Type 类型不被云函数所支持,或者在请求的时候没有正确地设置请求头。
在云函数中,一般情况下,如果请求是一个 HTTP POST 请求且 Content-Type 是 application/json,那么请求体应该出现在`body`中。但如果请求的 Content-Type 不是 application/json,云函数可能会将请求体解析为字符串并放在`queryStringParameters`中,而不是解析为 JSON 对象并放在`body`中。
完整js代码
javascript
'use strict';
exports.main = async (event, context) => {
console.log(event)
const db = uniCloud.database();
try {
const file = event.queryStringParameters.file; // 从前端传来的图片文件对象
// 上传图片到云存储
const res = await uniCloud.uploadFile({
cloudPath: `images/${Date.now()}_${Math.floor(Math.random() * 10000)}.png`, // 上传到云存储的路径,可以自定义
fileContent: Buffer.from(file.split(',')[1], 'base64') // 将 base64 格式的图片内容转换为 Buffer 对象
});
// 将图片地址返回给前端
return {
event:event,
fileUrl: res.fileID // 返回上传成功后的文件地址
};
} catch (error) {
return {
event:event,
code: 500,
message: '上传失败:' + error.message
};
}
};
**注意:**uniCloud.uploadFile
uniCloud.uploadFile 是 uniCloud 提供的用于将文件上传到云存储的一个方法。uniCloud 是 DCloud 提供的云开发平台,主要面向前端开发者。通过 uniCloud,开发者可以在云端处理数据库、文件存储等操作,而不需要自己搭建和维护服务器。
如果这篇文章对您有所帮助的话,点个小赞赞吧🌹🌹