# 获取文件临时链接

用云文件 ID 换取真实链接,公有读的文件获取的链接不会过期,私有的文件获取的链接默认24小时有效期,可以自己设定。

一次最多取 50 个。

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

# 请求参数

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

# 请求参数 fileList 的结构

字段 说明 数据类型
fileID 云文件ID String
maxAge 有效期时长,单位秒 number

# config 对象定义

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

# success 返回参数

字段 说明 数据类型
fileList 文件列表 Object
errMsg 成功为 ok,失败为失败原因 String

# 返回参数 fileList 的结构

属性 类型 说明
fileID string 云文件 ID
tempFileURL string 临时文件路径
maxAge number 有效期时长,单位秒
status number 状态码,0 为成功
errMsg string 成功为 ok,失败为失败原因

# fail 返回参数

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

# 使用示例

# 1. Promise 风格

cloud.getTempFileURL({
  fileList: [{
    fileID: 'cloud://test.png', // 对象存储文件 ID 列表,最多50个,从上传文件接口或者控制台获取
    maxAge: 86400 , // 有效期时长,单位秒,默认86400
  }]
}).then(res => {
  console.log(res.fileList)
}).catch(error => {
  console.error(err)
})

// 或如下传参
cloud.getTempFileURL({
  fileList: ['cloud://test.png'] // 对象存储文件 ID 列表,最多50个,从上传文件接口或者控制台获取
}).then(res => {
  console.log(res.fileList)
}).catch(error => {
  console.error(err)
})

# 2. Callback 风格

cloud.getTempFileURL({
  fileList: [{
    fileID: 'cloud://test.png', // 对象存储文件 ID 列表,最多50个,从上传文件接口或者控制台获取
    maxAge: 86400 , // 有效期时长,单位秒,默认86400
  }],
  success: res => {
    console.log(res.fileList)
  },
  fail: err => {
    console.error(err)
  },
  complete: res => {
    console.log(res)
  }
})

// 或如下传参
cloud.getTempFileURL({
  fileList: ['cloud://test.png'], // 对象存储文件 ID 列表,最多50个,从上传文件接口或者控制台获取
  success: res => {
    console.log(res.fileList)
  },
  fail: err => {
    console.error(err)
  },
  complete: res => {
    console.log(res)
  }
})

# 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.getTempFileURL({
      fileList: ['cloud://test'] // 临时路径获取
    })
    console.log(result)
  }
</script>