收藏
回答

云函数进行云存储

问题模块 框架类型 问题类型 终端类型 AppID 基础库版本
云开发 小程序 Bug 客户端 wx272b0344c3ba8d9b 2.4.3

我进行云函数上传图片进行云存储,云函数调用成功,云存储中也有列表,可是图片的文件流好像没有上传成功,有哪位大神帮忙看看是咋回事


// 云函数入口文件

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)

     }

   })


 },

//文件路径和文档流如下



//返回结果如下


//数据库云存储中查看


完全读不出来,我把它下载下来,也读取不到文件

 

求帮助


最后一次编辑于  2018-12-28
回答关注问题邀请回答
收藏

1 个回答

  • Alfredhuang
    Alfredhuang
    2018-12-29

     cloud.uploadFile({

         cloudPath: event.path,//云存储路径

         fileContent: event.file,//云存储文档流

       })


    filecontent 需要是文件内容



    但是你调用时

    var filePath = imgFile.path;

    传递的是文件路径。


    你可以试试把这个 jpg 文件用文本编辑器打开,看看是不是里面内容是个路径字符串。


    2018-12-29
    赞同
    回复 4
    • 青柠味脉动
      青柠味脉动
      2018-12-29

      不科学呀,imgFile.path 路径是本地上传自动生成的文档流呀,不应该就代表了图片本身吗?那这怎么办,把图片上传(wx.chooseImage)一块写到云函数里去?

      2018-12-29
      回复
    • Alfredhuang
      Alfredhuang
      2018-12-29

      在小程序里直接写文件到云存储不也是可以的么?


      或者就把图片内容读出来以后 base64编码然后传递到云函数里,云函数反编码以后再作为文件内容写云存储。

      2018-12-29
      回复
    • 『                』
      『 』
      03-11回复Alfredhuang

      有没有成功解决这个问题的代码,求分享

      03-11
      回复
    • 飞飞
      飞飞
      04-02

      同求解决方案,wx.chooseimage之后想通过云函数上传到云存储,但是Type of fileContent must be fs.ReadStream instead of undefined。

      小程序端直接操作数据库不太好。。。

      04-02
      回复