# 获取文件临时链接
用云文件 ID 换取真实链接,公有读的文件获取的链接不会过期,私有的文件获取的链接默认24小时有效期,可以自己设定。
一次最多取 50 个。
本文档适用于微信小程序中使用,如果你不是微信小程序,请移步适合的文档
# 请求参数
字段 | 说明 | 数据类型 | 默认值 | 必填 |
---|---|---|---|---|
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 风格
wx.cloud.getTempFileURL({
fileList: [{
fileID: 'cloud://test.png', // 对象存储文件ID列表,最多50个,从上传文件接口或者控制台获取
maxAge: 86400 , // 有效期时长,单位秒,默认86400
}]
}).then(res => {
console.log(res.fileList)
}).catch(error => {
console.error(err)
})
// 或如下传参
wx.cloud.getTempFileURL({
fileList: ['cloud://test.png'] // 对象存储文件ID列表,最多50个,从上传文件接口或者控制台获取
}).then(res => {
console.log(res.fileList)
}).catch(error => {
console.error(err)
})
# 2. Callback 风格
wx.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)
}
})
// 或如下传参
wx.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. 完整示例
在小程序的任何一个页面js替换如下代码,cloud://test.png
替换成自己存在的文件 cloudID
将在页面载入时,会自动启动获取链接任务
传入封装的获取链接方法,可以是一个CloudID字符串,也可以是一个数组
Page({
async onLoad() {
const result = await this.getTempFile('cloud://test.png',500)
console.log(result)
},
/**
* 获取微信云托管对象存储文件的临时访问地址
* @param {*} fileID 对象存储文件ID,可以是单个fileID,也可以是ID列表
* @param {*} time 有效时间,单位秒
*/
async getTempFile(fileID, time = 86400) {
const list = (typeof fileID === 'string' ? [fileID] : fileID).map(item => {
return {
fileID: item,
maxAge: time,
}
})
return await wx.cloud.getTempFileURL({
fileList: list
})
}
})
# 资源复用
# 资源复用
如果是资源复用,需要先进行初始化,初始化过程是异步,需要在业务中加以处理
在小程序app.js中粘贴如下代码,记得修改相关的信息,封装getTempFileURL可以参考上面例子,唯一不同点就是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.getTempFileURL({
fileList: ['cloud://test.png'] // 对象存储文件ID列表,最多50个,从上传文件接口或者控制台获取
}).then(res => {
console.log(res.fileList)
}).catch(error => {
console.error(err)
})
}
})