# 下载文件

从对象存储空间下载文件到小程序本地

本文档适用于公众号H5中使用,如果你不是公众号H5,请移步适合的文档

# 请求参数

字段 说明 数据类型 默认值 必填
fileID 云文件 ID String -
config 配置 Object -
success 成功回调
fail 失败回调
complete 结束回调

# config 对象定义

字段 说明 数据类型
env 使用的环境 ID,填写后忽略 init 指定的环境 String

# success 返回参数

字段 说明 数据类型
tempFilePath 临时文件路径 String
statusCode 服务器返回的 HTTP 状态码 Number
errMsg 成功为 downloadFile:ok,失败为失败原因 String

# fail 返回参数

字段 说明 数据类型
errCode 错误码 Number
errMsg 错误信息,格式 downloadFile:fail msg String

# 使用示例

# 1. Callback 风格

cloud.downloadFile({
  fileID: 'cloud://test.png', // 对象存储文件ID,从上传文件接口或者控制台获取
  success: res => {
    console.log(res.tempFilePath)
  },
  fail: err => {
    console.error(err)
  }
})

# 2. Promise 风格

cloud.downloadFile({
  fileID: 'cloud://test.png', // 对象存储文件ID,从上传文件接口或者控制台获取
}).then(res => {
  console.log(res.tempFilePath)
}).catch(error => {
  console.error(err)
})

# 3. 完整示例

以下示例代码写入 html 文件,然后在浏览器打开。

注意替换 appid 等信息,以下是公众号未登录模式(订阅号、服务号均可),需要在对象存储 - 存储权限中修改写权限未所有人可读,这里会有隐患,仅供测试使用。

如果你想安全实现,有两种方法:

  1. 使用公众号有鉴权登录方式,具体参见文档,需要已认证的服务号,订阅号不支持。
  2. 使用服务端获取 API 方式,将下载收归于业务控制,具体参见文档,开发灵活但技术要求较高。

以上两种方式都可以安全的实现操作,第1个用的是权限管控(可以配置安全规则,由平台维护),第2个是自己和业务结合,由自己维护;请根据业务需要斟酌使用!

<script src="https://web-9gikcbug35bad3a8-1304825656.tcloudbaseapp.com/sdk/1.3.0/cloud.js"></script>
<script>
  window.onload = async function () {
    window.c1 = new cloud.Cloud({
      appid: '公众号AppID', // 运行的公众号APPID
      resourceAppid: '小程序或公众号AppID', // 资源方账号APPID
      resourceEnv: '微信云托管环境ID', // 资源方云环境 ID
      traceUser: true // 记录用户访问
    });
    await window.c1.init();
    const result = await c1.downloadFile({
      fileID: 'cloud://test.png' // 临时路径获取
    })
    console.log(result)
  }
</script>