评论

云开发-保存网络文件到云开发存储

本文章介绍使用云开发,将文件流保存到云开发的存储中,提供小程序中访问。

  • 技术
  1. 小程序云开发
  2. NodeJS
  • 开始
  1. 新建小程序云开发项目,开通云开发;
  2. 在cloudfunctions下新建Node.js云函数,命名download;
  3. 进入新建的云函数文件目录下(电脑磁盘download文件夹下),执行;
    参考:https://www.npmjs.com/package/request-promise

npm install request-promise

  1. 打开新建云函数index.js文件内容
// 云函数入口文件
const cloud = require('wx-server-sdk')
const rp = require('request-promise');

cloud.init()

// 云函数入口函数
exports.main = async(event, context) => {

  var options = {
    // 请求方式
    method: 'POST',
    // 请求地址
    uri: 'https://image.qq.com',
    // 请求header
    headers: {
      'Content-type': 'application/json'
    },
    // 是否返回完整response
    resolveWithFullResponse: true,
    // 发送的请求参数
    body: {
      "text": event.text,
      "voice": event.voice
    },
    json: true,
    // encoding 当请求出现问题时,可以设置此参数,尝试解决
    encoding: null
  };
  const response = await rp(options);

  var time = new Date();
  // 请求成功返回结果,判断是否成功
  // if (response.headers['content-type'] == 'audio/mpeg') {
  const upload = await cloud.uploadFile({
  	//保存文件路径
    cloudPath: time.getTime() + '.jpg',
    //文件流
    fileContent: response.body,
  });

  return {
    event,
    upload
  }
}
  1. 在miniprogram文件夹下的pages中新建Page,命名index,打开index.js,调用云函数
// miniprogram/pages/index/index.js
Page({

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    this.downloadImg();
  },
  downloadImg() {
    wx.cloud.callFunction({
      // 要调用的云函数名称
      name: 'download',
      // 传递给云函数的参数
      data: {
        text: that.data.text,
        voice: that.data.voice
      },
      success: res => {
        console.log(res)
      }
    });
  }
})
最后一次编辑于  03-04  
点赞 4
收藏
评论