作者:重庆互联网小徐 发布时间:2023-12-08 浏览:21394 赞(2858) 收藏 评论(0)
此文档主要讲解对象存储API的使用方法和一些简易示例,具体详细参数和API-DEMO,请前往API文档
微信云托管的对象存储底层使用的是腾讯云COS,所以你可以通过开放接口服务获取临时秘钥,结合腾讯云COS-SDK,实现对象存储的访问处理。
主要操作步骤如下:
安装对应语言的 COS-SDK。
使用容器开放接口服务获取临时秘钥,使用该秘钥初始化COSSDK。
使用 COS SDK 操作存储桶,可以进行文件列表读取、文件下载、文件删除等操作。
使用 文件元数据,可以进行文件上传、获取文件上传者等操作。
注意: 文件缺少元数据时,小程序端无法访问。
具体的使用请参考开发指引
上传成功后会获得文件唯一标识符,即文件 cloudID
,其可以用于调用下载、临时Url、删除接口
在小程序端可调用 wx.cloud.uploadFile
方法进行上传,但需要添加 config 指定微信云托管环境
wx.cloud.uploadFile({ cloudPath: 'test.png', // 对象存储路径,根路径直接填文件名,文件夹例子 test/文件名,不要 / 开头 filePath: 'wxfile://test.png', // 微信本地文件,通过选择图片,聊天文件等接口获取 config: { env: 'werun-id' // 微信云托管环境ID }, success: console.log, fail: console.error})
在公众号或普通网页使用WEB-SDK时,可调用 cloud.uploadFile
方法上传,具体使用例子如下:
cloud.uploadFile({ cloudPath: 'example.png', // 对象存储路径,根路径直接填文件名,文件夹例子 test/文件名,不要 / 开头 file: new File(), // 通过 input 或者 new File 获取 config: { env: 'werun-id' // 需要替换成自己的微信云托管环境ID } success: res => { console.log(res.fileID) }, fail: err => { console.error(err) }})
关于 cloudPath
对象存储路径只需要填写根目录相对位置即可,比如你在根目录放置test.jpg
文件,则只需要填写cloudPath: 'test.jpg'
,最终返回的 CloudID 为cloud://werun-id/test.jpg
,其中cloud://werun-id/
为示例,每个环境都不同,你可以在控制台上传一个文件看到 CloudID。
无论你是上传层级文件,还是根目录文件,cloudid 前缀都不变,变化的只有后面的文件路径。
如果你要在根目录创建文件夹file
,然后在file
文件夹中创建A
文件夹, 最终在A
文件夹中传入文件test.jpg
, 则cloudPath
为file/A/test.jpg
,最终返回的 CloudID 为cloud://werun-id/file/A/test.jpg
使用其他客户端,无法使用SDK进行操作时,需要自己组装上传,详情请参见文档
根据文件 cloudID
调用 wx.cloud.downloadFile
下载文件,用户仅可下载其有访问权限的文件:
wx.cloud.downloadFile({ fileID: 'cloud://werun-id/test/test.png', success: console.log, fail: console.error})
在公众号或普通网页使用WEB-SDK时,可调用 cloud.downloadFile
方法上传,具体使用例子如下:
cloud.downloadFile({ fileID: 'cloud://test.png', // 对象存储文件ID,从上传文件接口或者控制台获取 success: res => { console.log(res.tempFilePath) }, fail: err => { console.error(err) }})
使用其他客户端,无法使用SDK进行操作时,详情请参见文档
根据文件 cloudID
调用 wx.cloud.deleteFile
删除文件:
wx.cloud.deleteFile({ fileList: ['cloud://werun-id/test/test.png'], // 文件唯一标识符 cloudID, 可通过上传文件接口获取 success: console.log, fail: console.error})
在公众号或普通网页使用WEB-SDK时,可调用 cloud.deleteFile
方法上传,具体使用例子如下:
cloud.deleteFile({ fileList: ['cloud://test.png'], // 对象存储文件ID列表,最多50个,从上传文件接口或者控制台获取 success: res => { console.log(res.fileList) }, fail: err => { console.error(err) }, complete: res => { console.log(res) }})
使用其他客户端,无法使用SDK进行操作时,详情请参见文档
根据文件 cloudID
调用 wx.cloud.getTempFileURL
换取临时文件网络链接,返回有 fileList 数组
fileList 是一个有如下结构的对象数组
{ "fileID": "cloud://xxx.png", // 文件cloudID "tempFileURL": "", // 临时文件网络链接 "maxAge": 86400, // 有效期,默认86400}
wx.cloud.getTempFileURL({ fileList: ['cloud://werun-id/test/test.png'], // 文件唯一标识符 cloudID, 可通过上传文件接口获取 success: console.log, fail: console.error})// 也可以传入对象数组,如下wx.cloud.getTempFileURL({ fileList: [{ fileID: 'cloud://werun-id/test/test.png', // 文件唯一标识符 cloudID, 可通过上传文件接口获取 maxAge: 3600, // 有效期,不传则86400 }], success: console.log, fail: console.error})
在公众号或普通网页使用WEB-SDK时,可调用 cloud.getTempFileURL
方法上传,具体使用例子如下:
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) }})
使用其他客户端,无法使用SDK进行操作时,详情请参见文档
微信小程序组件支持传入云文件 ID,支持列表如下:
组件 | 属性 |
---|---|
image | src |
video | src、poster |
cover-image | src |
接口 | 参数 |
---|---|
getBackgroundAudioManager | src |
createInnerAudioContext | src |
previewImage | urls、current |
—————————————————————————————————————————————————————
重庆互联网项目从2004年开始为各行各业提供互联网发展解决方案,专业从事网站、小程序、微信公众号、APP、电商平台、系统等互联网平台开发,帮助企业实现从传统行业到互联网的完美转型。截止目前,重庆互联网合作的企业遍布全国各地,19年的开发经验和完善的售后服务体系获得合作客户的高度认可!
关注重庆互联网官方公众号,即可获取粉丝专享福利!
欢迎广大用户为此页面进行评价,评价成功将获得积分奖励!