使用uniCloud
的云存储,无需再像传统模式那样单独去购买存储空间、CDN映射、流量采购等;
文件上传至云存储有3种方式:
uniCloud.uploadFile
。uniCloud.uploadFile
。注意事项:
uniCloud.uploadFile
。请不要混淆。uni.uploadFile
的API,那个API用于连接非uniCloud的上传使用。请不要混淆。在uniCloud由阿里云提供的云空间里,云存储总文件量上限为10GB,单文件大小限制为100MB,自带CDN并且完全免费。这些免费资源可用于正常公司业务,阿里云不允许开发者使用这些免费的存储及CDN资源来开展图床类业务。
在客户端使用uniCloud.uploadFile前,应该将以下域名配置到upload白名单。
bsppub.oss-cn-shanghai.aliyuncs.com
前端调用云存储API上传文件
uniCloud.uploadFile({
cloudPath:"上传后云端显示的文件名",//可以重名,不支持子目录
filePath:"本地需要上传的文件路径",
success:(res)=>{//上传成功后的回调
//res.fileID为文件上传成后的云端访问地址,可直接使用
},
fail:()=>{},//上传失败的回调
onUploadProgress:()=>{//上传进度回调
}
})
以下代码为从手机相册选取一张图片上传至云存储
//前端代码
uni.chooseImage({
count: 1,
success(res) {
console.log(res);
if (res.tempFilePaths.length > 0) {
let filePath = res.tempFilePaths[0]
//进行上传操作
// promise方式
const result = await uniCloud.uploadFile({
filePath: filePath,
cloudPath: 'a.jpg',
onUploadProgress: function(progressEvent) {
console.log(progressEvent);
var percentCompleted = Math.round(
(progressEvent.loaded * 100) / progressEvent.total
);
}
});
// callback方式,与promise方式二选一即可
uniCloud.uploadFile({
filePath: filePath,
cloudPath: 'a.jpg',
onUploadProgress: function(progressEvent) {
console.log(progressEvent);
var percentCompleted = Math.round(
(progressEvent.loaded * 100) / progressEvent.total
);
},
success() {},
fail() {},
complete() {}
});
}
}
});
在前端,我们仅能上传文件至云存储,不能删除云存储中的文件。要删除云存储中的文件要么在uniCloud Web控制台,要么在云函数中操作。
const res = await uniCloud.uploadFile({
cloudPath:"上传后云端显示的文件名",
fileContent:"文件的绝对路径或文件的buffer"
})
console.log(res.fileID);//文件上传后的云端访问地址
下面的代码演示了如何把图片从一个URL读取出来并上传到自己的云存储中
const image = await uniCloud.httpclient.request("图片的url");
const res = await uniCloud.uploadFile({
cloudPath:"上传后云端显示的文件名",
fileContent:image.data//文件的buffer
});
注意:如果是从客户端上传文件,不建议读取文件再通过传参传给云函数,再由云函数上传到云存储,应该在客户端直传云存储。
const res = await uniCloud.deleteFile({
fileList: [
"fileID"//文件在云存储中的访问地址
]
});
在访问云存储中的图片或视频文件时,我们可以通过追加一些参数来即时处理文件。注意,处理是实时生效的,这并不会对你云存储中的文件产生任何改变。
可以通过图片缩放参数,调整图片大小,常常用来做各种不同尺寸的缩略图。
使用方法:
//fileID 示例 https://vkceyugu.cdn.bspapp.com/VKCEYUGU-ef89fa94-5d19-4f01-b2b8-edc1f4387edc/b98b33ba-1595-4fda-995a-6c4e17a9e2c5.png
fileID?x-oss-process=image/resize,其他参数
参数说明:
注意事项:
宽*高*图片帧数
;非动态图片(例如PNG图片)的像素计算方式为宽*高
。limit_0
参数放大图片。例如,https://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_500,limit_0
可以通过图片裁剪参数,在原图上裁剪指定大小的矩形图片。
使用方法:
//fileID 示例 https://vkceyugu.cdn.bspapp.com/VKCEYUGU-ef89fa94-5d19-4f01-b2b8-edc1f4387edc/b98b33ba-1595-4fda-995a-6c4e17a9e2c5.png
fileID?x-oss-process=image/crop,其他参数
参数说明:
注意事项:
在使用自定义裁剪功能时,请注意以下事项:
BadRequest
错误,错误信息为:Advance cut's position is out of image。可以通过图片水印参数,为云存储中的图片文件增加水印文字或水印图。
使用方法:
//fileID 示例 https://vkceyugu.cdn.bspapp.com/VKCEYUGU-ef89fa94-5d19-4f01-b2b8-edc1f4387edc/b98b33ba-1595-4fda-995a-6c4e17a9e2c5.png
fileID?x-oss-process=image/watermark,其他参数
参数说明:
水印编码:
在添加水印操作中,文字水印的文字内容、文字颜色、文字字体、图片水印的水印图片名称等参数需要进行URL安全的Base64编码。编码步骤如下:
注意事项:
可以通过格式转换参数,转换云存储中图片文件的格式。
使用方法:
//fileID 示例 https://vkceyugu.cdn.bspapp.com/VKCEYUGU-ef89fa94-5d19-4f01-b2b8-edc1f4387edc/b98b33ba-1595-4fda-995a-6c4e17a9e2c5.png
fileID?x-oss-process=image/format,其他参数
参数说明:
注意事项:
image/resize,w_100/format,jpg
image/reisze,w_100/format,jpg/watermark,...
可以通过图片质量改变参数,在取出云存储中的图片文件是调节图片质量。
使用方法:
//fileID 示例 https://vkceyugu.cdn.bspapp.com/VKCEYUGU-ef89fa94-5d19-4f01-b2b8-edc1f4387edc/b98b33ba-1595-4fda-995a-6c4e17a9e2c5.png
fileID?x-oss-process=image/quality,其他参数
参数说明:
注意事项:
质量变换仅支持JPG和WebP,其他图片格式不支持。
可以通过视频截帧参数,取出云存储中视频文件指定帧的图片。
使用方法:
//fileID 示例 https://vkceyugu.cdn.bspapp.com/VKCEYUGU-ef89fa94-5d19-4f01-b2b8-edc1f4387edc/b98b33ba-1595-4fda-995a-6c4e17a9e2c5.png
fileID?x-oss-process=image/snapshot,其他参数
参数说明:
注意事项:
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有