收藏
回答

小程序云函数下载网络文件上传到云存储中,报 write ECONNRE错误

框架类型 问题类型 终端类型 AppID 基础库版本
小程序 Bug 工具 wx03fca893158cc038 2.0.0

原始需求:小程序前端播放其它网站的网络音频文件,

遇到的问题:我要访问的网站是国外的https,它没有在工信部备案,不算合法域名。然而微信前台https访问要做合法域名校验,无法通过校验,因此,无法通过小程序前端调用。

自己想的解决方法:给小程序增加云开发后台,然后在云开发后台下载资源网站的音频文件到小程序后台云存储中。这样小程序前端就可以成功调用云开发后台的文件。

现问题:在云开发后台把来自其它站点的网络文件下载后,然后上传到云存储中,报错。

1)第一次尝试解决

我的关键代码 如下:

const synthesizeStream = textToSpeech.synthesizeUsingWebSocket(synthesizeParams);//这是来自其它网站的文件流

synthesizeStream.pipe(fs.createWriteStream(filePath));//成功写入本地开发环境的硬盘


使用开发工具 在云开发本地调试是可以运行的,把从第三方发过来的synthesizeStream  通过pipe方法写入到本地磁盘,生成文件。


但是 使用开发工具在云开发网络调试的时候,由于云开发的云存储不可写只可读,不能使用pipe方法所以只能使用官方的api上传文件。      疑问:这和云开发控制台 存储管理菜单下的权限管理子菜单功能有关系吗?

2)第二次尝试解决

我使用如下官方文档的方法

await cloud.uploadFile({

cloudPath: 'Hello world.mp3',

fileContent: synthesizeStream

})

报错误:

VM412 index.js:163 Error: errCode: -1 unknown error | errMsg: uploadFile:fail Error: write ECONNABORTED; at uploadFile api; 

    at new CloudSDKError (E:\xcx_englishreading_cloud\cloudfunctions\ibmVoiceCall\node_modules\wx-server-sdk\index.js:4332:28)

    at returnAsCloudSDKError (E:\xcx_englishreading_cloud\cloudfunctions\ibmVoiceCall\node_modules\wx-server-sdk\index.js:4384:16)

    at Object.returnAsFinalCloudSDKError (E:\xcx_englishreading_cloud\cloudfunctions\ibmVoiceCall\node_modules\wx-server-sdk\index.js:4398:13)

    at Cloud.<anonymous> (E:\xcx_englishreading_cloud\cloudfunctions\ibmVoiceCall\node_modules\wx-server-sdk\index.js:3864:62)

    at step (E:\xcx_englishreading_cloud\cloudfunctions\ibmVoiceCall\node_modules\tslib\tslib.js:133:27)

    at Object.throw 




望解答疑问。感谢。





最后一次编辑于  2019-04-09
回答关注问题邀请回答
收藏

3 个回答

  • 悟空
    悟空
    2019-04-09

    只能通过第二种方案,但是你的问题应该是出在synthesizeStream这个数据流上,uploadFile接口的fileContent只接受Buffer或fs.ReadStream,你可以试试将websocket改成直接http请求获取Buffer,再通过uploadFile接口上传。

    2019-04-09
    有用 1
    回复 1
    • Derrick舰长
      Derrick舰长
      2019-04-09

      感谢,问题已经解决。

      使用 node.js 的request 请求第三方的https api,获取的buffer能够通过uploadFile接口上传到云存储。



      2019-04-09
      回复
  • 小猪快跑
    小猪快跑
    2019-09-18

    老板,您这多大的生意呀,都做到国外去了。刚需的话不能定时同步在自己服务器上嘛,我也是醉了。。。

    2019-09-18
    有用
    回复
  • Derrick舰长
    Derrick舰长
    2019-04-09

    坐等小程序云开发官方来解答难道是让我弃用小程序云开发,转去腾讯云 再重新写一个服务器后台?这样就不省事了


    2019-04-09
    有用
    回复
登录 后发表内容