我进行云函数上传图片进行云存储,云函数调用成功,云存储中也有列表,可是图片的文件流好像没有上传成功,有哪位大神帮忙看看是咋回事
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
try {
return await cloud.uploadFile({
cloudPath: event.path,//云存储路径
fileContent: event.file,//云存储文档流
})
} catch (e) {
return e
}
}
//云函数调用
upImg(that,upLoadImg){
var fileName = 'test'
var imgFile = upLoadImg[0]
var filePath = imgFile.path;
var dateJson = Util.formatTimeJson(new Date())//这里是获取上传日期时间的json格式
const cloudPath = fileName+'/'+dateJson +filePath.match(/\.[^.]+?$/)[0]
wx.cloud.callFunction({
name: 'add-file',
data: {
path: cloudPath,//云存储路径
file: filePath,//云存储文档流
},
success: res => {
console.log(res)
}
})
},
//文件路径和文档流如下
//返回结果如下
//数据库云存储中查看
完全读不出来,我把它下载下来,也读取不到文件
求帮助
cloud.uploadFile({
cloudPath: event.path,//云存储路径
fileContent: event.file,//云存储文档流
})
filecontent 需要是文件内容
但是你调用时
var filePath = imgFile.path;
传递的是文件路径。
你可以试试把这个 jpg 文件用文本编辑器打开,看看是不是里面内容是个路径字符串。
不科学呀,imgFile.path 路径是本地上传自动生成的文档流呀,不应该就代表了图片本身吗?那这怎么办,把图片上传(wx.chooseImage)一块写到云函数里去?
在小程序里直接写文件到云存储不也是可以的么?
或者就把图片内容读出来以后 base64编码然后传递到云函数里,云函数反编码以后再作为文件内容写云存储。
有没有成功解决这个问题的代码,求分享
同求解决方案,wx.chooseimage之后想通过云函数上传到云存储,但是Type of fileContent must be fs.ReadStream instead of undefined。
小程序端直接操作数据库不太好。。。