收藏
回答

云函数cloud.uploadFile API使用读取到的FS上传没有响应,如何解决?

小程序云函数使用officegen生成word文件到/tmp目录,使用fs读取文件后,调用cloud.uploadFile,没有响应,云函数超时。

从本地调试中可以看到请求一直是(pending)状态,没有传输数据。

云函数代码如下:

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

const officegen = require('officegen');

const fs = require('fs');

const path = require('path');

const docx = officegen('docx');


cloud.init({

  env: '***************'

})

const db = cloud.database()

const _ = db.command


// Officegen calling this function after finishing to generate the docx document:

docx.on('finalize', function (written) {

  console.log(

    'Finish to create a Microsoft Word document.'

  )

})


// Officegen calling this function to report errors:

docx.on('error', function (err) {

  console.log(err)

})


// 云函数入口函数

exports.main = async (event, context) => {

    // Create a new paragraph:

    let pObj = docx.createP({

      align: 'center'

    })

    pObj.addText('Title', {

      bold: true,

      font_face: 'kaiti',

      font_size: 18,

      color: '595959'

    });

    pObj = docx.createP()

    pObj = docx.createP({

      align: 'justify'

    })

    pObj.options.indentFirstLine = 440;

    pObj.addText('TestTxt', {

      font_face: 'fangsong',

      font_size: 15,

      color: '595959'

    });

    // Let's generate the Word document into a file:

    let out = fs.createWriteStream('/tmp/example.docx')

    out.on('error', function (err) {

      console.log(err)

    })

    // Async call to generate the output file:

    await docx.generate(out)

    const fileStream = fs.createReadStream('/tmp/example.docx')

    return await cloud.uploadFile({

      cloudPath: 'test.docx',

      fileContent: fileStream,

    })

}


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

2 个回答

登录 后发表内容
问题标签