上传文件 您所在的位置:网站首页 nodejs文件上传中断网 上传文件

上传文件

2023-10-20 00:34| 来源: 网络整理| 查看: 265

# 上传文件

将本地资源上传至对象存储空间,如果上传至同一路径则是覆盖写

本文档适用于微信小程序中使用,如果你不是微信小程序,请移步适合的文档

公众号H5 服务端和其他客户端 # 请求参数 字段 说明 数据类型 默认值 必填 cloudPath 云存储路径,命名限制见文件名命名限制 String - 是 filePath 要上传文件资源的路径 String - 是 config 配置 Object - 否 success 成功回调 fail 失败回调 complete 结束回调 # config 对象定义 字段 说明 数据类型 env 使用的环境 ID,填写后忽略 init 指定的环境 String# success 返回参数 字段 说明 数据类型 fileID 文件 ID String statusCode 服务器返回的 HTTP 状态码 Number errMsg 错误信息,格式 uploadFile:ok String# fail 返回参数 字段 说明 数据类型 errCode 错误码 Number errMsg 错误信息,格式 uploadFile:fail msg String# 返回值

如果请求参数中带有 success/fail/complete 回调中的任一个,则会返回一个 UploadTask 对象,通过 UploadTask 对象可监听上传进度变化事件,以及取消上传任务。

# 使用示例 # 1. Callback 风格 wx.cloud.uploadFile({ cloudPath: 'example.png', // 对象存储路径,根路径直接填文件名,文件夹例子 test/文件名,不要 / 开头 filePath: 'wxfile://test', // 微信本地文件,通过选择图片,聊天文件等接口获取 config: { env: 'werun-id' // 需要替换成自己的微信云托管环境ID } success: res => { console.log(res.fileID) }, fail: err => { console.error(err) } }) # 2. Promise 风格 wx.cloud.uploadFile({ cloudPath: 'example.png', // 对象存储路径,根路径直接填文件名,文件夹例子 test/文件名,不要 / 开头 filePath: 'wxfile://test', // 微信本地文件,通过选择图片,聊天文件等接口获取 config: { env: 'werun-id' // 需要替换成自己的微信云托管环境ID } }).then(res => { console.log(res.fileID) }).catch(error => { console.error(err) }) # 3. 完整示例

在小程序的任何一个页面js替换如下代码,环境ID需要替换成自己的

将在页面载入时弹出图片选择框,选择图片后自动上传,默认上传到对象存储的 test 文件夹下,命名 test.png

封装的上传函数中 onCall 方法参数,可以接收到文件上传进度的回调,可以随时返回 false 中断上传任务,返回其他或者不返回则正常上传。

Page({ async onLoad() { const that = this await wx.chooseImage({ count: 1, async success(res){ console.log(res.tempFilePaths) const result = await that.uploadFile(res.tempFilePaths[0], 'test/test.png', function(res){ console.log(`上传进度:${res.progress}%,已上传${res.totalBytesSent}B,共${res.totalBytesExpectedToSend}B`) // if(res.progress > 50){ // 测试文件上传一半就终止上传 // return false // } }) console.log(result) } }) }, /** * 上传文件到微信云托管对象存储 * @param {*} file 微信本地文件,通过选择图片,聊天文件等接口获取 * @param {*} path 对象存储路径,根路径直接填文件名,文件夹例子 test/文件名,不要 / 开头 * @param {*} onCall 上传回调,文件上传过程监听,返回false时会中断上传 */ uploadFile(file, path, onCall = () => {}) { return new Promise((resolve, reject) => { const task = wx.cloud.uploadFile({ cloudPath: path, filePath: file, config: { env: 'werun-id' // 需要替换成自己的微信云托管环境ID }, success: res => resolve(res.fileID), fail: e => { const info = e.toString() if (info.indexOf('abort') != -1) { reject(new Error('【文件上传失败】中断上传')) } else { reject(new Error('【文件上传失败】网络或其他错误')) } } }) task.onProgressUpdate((res) => { if (onCall(res) == false) { task.abort() } }) }) } }) # 资源复用

如果是资源复用,需要先进行初始化,初始化过程是异步,需要在业务中加以处理

在小程序app.js中粘贴如下代码,记得修改相关的信息,封装upload可以参考上面例子,唯一不同点就是wx.cloud替换,其他基本一致

App({ logger:require('./log.js'), async onLaunch() { const c1 = new wx.cloud.Cloud({ resourceAppid: 'wx886699112233', // 环境所属的账号appid resourceEnv: 'prod-weruntest', // 微信云托管的环境ID }) await c1.init() this.cloud = c1 // 在页面js中,可以使用getApp().cloud this.cloud.uploadFile({ cloudPath: 'example.png', // 对象存储路径,根路径直接填文件名,文件夹例子 test/文件名,不要 / 开头 filePath: 'wxfile://test', // 微信本地文件,通过选择图片,聊天文件等接口获取 success: res => { console.log(res.fileID) }, fail: err => { console.error(err) } }) } })


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有