实现通过千牛端或手淘端直接上传图片到商家图片空间(https://sucai.wangpu.taobao.com/#/?_k=v0g1bp)。完整的解决方案可参考图片上传解决方案。
1.文件访问更好的支持,包括加速、传输安全, 支持小程序ar场景;
2.安全升级,每个ISV空间独立域名,基于独立域名能够更好地安全隔离安全管控。
1. 只允许在应用端发起调用,不允许服务端发起。
2. 需要获取权限包:商家应用-商家云存储。
3. SAAS化模型下,消费者端模板无法调用。只有实例化以后的小程序才可以发起调用。
4. 目前只支持上传图片,不支持视频音频。
5. 云SDK版本>=1.2.8。
6. 图片大小不能超过3M。
注意:在查看图片是否上传到相应账号下时,首先需要保证客户端云SDK版本号>=1.2.8(建议保持最新)。低版本的云SDK无商家空间这一概念,会上传到云存储中。
SAAS化模型下,对于商家端小程序,图片上传到当前登录账号的图片空间上;对于实例化的消费者端小程序,图片上传到小程序owner账号的图片空间上。
对B端应用,在千牛上授权时,scope参数传入 * 即可,参考代码:
my.authorize({ scopes: '*', success: (res) => { my.alert({ content: JSON.stringify(res)}); }, });
对C端应用调用,无需额外授权。
接口名:cloud.file.uploadFile。
入参说明:
1)filePath(必填): 本地文件路径。 string类型。
2)fileType(必填):文件类型,可选类型为image, video, audio, other。 string类型。
3)fileName:(可选):文件名,自己定义。string类型。
4)seller(可选):是否上传到图片空间。boolean类型,不传默认false。当该参数为true时, fileType只能是image。
5)dirId (可选):商家图片空间目录ID,不传则到根目录。目录id获取,需要调用taobao.picture.category.get 接口。接口返回参数中的picture_category_id即为需求值。
出参说明:fileId ,资源ID ,作为cloud.file.getTempFileURL的入参,用于获取文件临时访问url。
const {cloud} = getApp(); Page({ data:{}, onLoad(query) { // 页面加载 }, testUploadFile(){ my.chooseImage({ success: images => { let fileId = await cloud.file.uploadFile({ filePath: images.apFilePaths[0], fileType: 'image', fileName: '/user/avatar.png', seller: true, dirId: '2223' }) } }) } });
注意:已下线,商家空间资源不允许使用接口删除。
接口名:cloud.file.deleteFile。
入参说明:
1)fileId(必填):从上传文件接口返回参数中获取,string类型,不允许批量操作。
2)seller(可选):是否上传到图片空间。boolean类型,不传默认false。
出参说明:true|false,表示删除结果。
调用示例:
const {cloud} = getApp(); Page({ data:{}, onLoad(query) { // 页面加载 }, testDeleteFile(){ let ret = await cloud.file.deleteFile({ fileId: 'cloud://xxxxx' , seller: true }); } });
接口名:cloud.file.getTempFileURL
入参说明:
1)fileId(必填):从上传文件接口返回参数中获取,string数组,可以批量查询
2)seller(可选):是否上传到图片空间。boolean类型,不传默认false。
出参说明:接口返回对应文件的临时访问链接
调用示例:
const {cloud} = getApp(); Page({ data:{}, onLoad(query) { // 页面加载 }, testGetTempFileURL(){ let urls = await cloud.file.getTempFileURL({ fileId: ['cloud://xxx1', 'cloud://xxx2'] , seller: true }) } });