收藏
回答

云端调用cloud.uploadFile把文件上传到微信小程序官方云存储时,报TypeError

框架类型 问题类型 终端类型 AppID 环境ID 基础库版本
小程序 Bug 工具 wxb0663e2a33b9ad57 singal-gen-xqne0 2.2.0

从别的接口接收到base64编码的图像,想在云端以base64作为encoding保存为文件后,读取该文件并上传到云存储,在上传时报告了异常:

  1. errCode-1
  2. errMsg"uploadFile:fail TypeError: Cannot destructure property `url` of 'undefined' or 'null'.; at uploadFile api; "

相关代码:

const fs = require('fs')

const path = require('path')

const cloud = require('wx-server-sdk')

//文件上传函数

function upload_res_file(options) {

  fs.writeFileSync(path.join(__dirname, 'demo.jpg'), options.fileContent, {

    encoding: 'base64',

    mode: 0o777

  });

  const file_content = fs.createReadStream(path.join(__dirname, 'demo.jpg'));

  cloud.uploadFile({

    cloudPath: options.cloudPath + '.jpg',

    fileContent: file_content,

  }).then(options.success).catch(options.fail);

}



回答关注问题邀请回答
收藏

3 个回答

  • ⃠꧁⃘⃘༺蚊⃘⃘༒⃘⃘香༻⃘⃘꧂
    ⃠꧁⃘⃘༺蚊⃘⃘༒⃘⃘香༻⃘⃘꧂
    2020-09-24

    自己把问题解决了,这可能是腾讯接口的一个BUG,cloudPath出现了不支持的字符时,就会出现此问题,改成支持的字符即可。

    2020-09-24
    有用 1
    回复 4
    • 万垒之鹰
      万垒之鹰
      2022-01-07
      我的问题跟你的一样,各种调试修改都不行,cloudPath没有用不支持的字符啊
      2022-01-07
      回复
    • 万垒之鹰
      万垒之鹰
      2022-01-07
      请问你是怎么修改的,修改的哪里啊?
      2022-01-07
      回复
    • 万垒之鹰
      万垒之鹰
      2022-01-07
      我已经把cloudPath直接修改成了一个固定文件名都不行
      2022-01-07
      回复
    • 森森沐沐
      森森沐沐
      2023-07-27
      我按照你这样,可以将base64文档上传了,如下代码,但是下载下来,是乱码,还没找到解析的方法。
      2023-07-27
      回复
  • 森森沐沐
    森森沐沐
    2023-07-26

     transTempFileStream(Datastream, dir, id) {

    const cloud = require('wx-server-sdk')

    const fs = require('fs')

    const path = require('path')

    // var xlsx = require('node-xlsx');

    let fileBase = Datastream[0].fileBase.data;

    let name = Datastream[0].name;


    let imgList = [''];


    let ext = name.match(/\.[^.]+?$/)[0];


    let rd = (Math.random() * (999999 - 100000 + 1) | 0) + 100000; //ccminiHelper.genRandomNum(100000, 999999);

    fs.writeFileSync(path.join(__dirname, name), fileBase, {  

    encoding: 'base64',  

    mode: 0o777

      });

      const file_content = fs.createReadStream(path.join(__dirname, name));  

      cloud.uploadFile({  

    cloudPath: dir + id + '_' + rd + ext,    

    fileContent: file_content,  

      }).then(res => {

    imgList[0] = res.fileID;

    }).catch(error => {

    console.log(error)

    })



    return imgList;

    };

    2023-07-26
    有用
    回复
  • 万垒之鹰
    万垒之鹰
    2022-01-07
    // 云函数入口文件
    const cloud = require('wx-server-sdk')
    const {
        createReport
    } = require('docx-templates')
    const fs = require('fs')
    const path = require('path')
    // const dayjs = require('dayjs')
    
    
    cloud.init({
        env'cloud.DYNAMIC_CURRENT_ENV'
    })
    
    
    
    // 云函数入口函数
    exports.main = async (event, context) => {
    const fileStream = fs.createReadStream(path.join(__dirname, 'verify_company.docx'))
        return await cloud.uploadFile({
            cloudPath'verify_company.docx',
            fileContent: fileStream,
       })
        
    }
    


    其实我之前的代码比较复杂,但是一直出错,我干脆就直接照搬照抄了官方文档里的示例,但是依然报错,报错的内容一模一样,我都茫然了

    2022-01-07
    有用
    回复
登录 后发表内容
问题标签