前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云存储基础

云存储基础

作者头像
大帅老猿
发布2022-04-13 19:54:21
13.5K0
发布2022-04-13 19:54:21
举报
文章被收录于专栏:大帅老猿

云存储基础

使用uniCloud的云存储,无需再像传统模式那样单独去购买存储空间、CDN映射、流量采购等;

文件上传至云存储有3种方式:

  1. uniCloud Web控制台:点击云存储,通过web界面进行文件上传。该管理界面同时提供了资源浏览、删除等操作界面。
  2. 客户端上传:在前端js中调用uniCloud.uploadFile
  3. 云函数上传:在云函数js中调用uniCloud.uploadFile

注意事项:

  • 前端和云函数端,均有一个相同名称的api:uniCloud.uploadFile。请不要混淆。
  • 前端还有一个uni.uploadFile的API,那个API用于连接非uniCloud的上传使用。请不要混淆。
  • 由于安全原因暂时禁止云存储内上传html文件。

在uniCloud由阿里云提供的云空间里,云存储总文件量上限为10GB,单文件大小限制为100MB,自带CDN并且完全免费。这些免费资源可用于正常公司业务,阿里云不允许开发者使用这些免费的存储及CDN资源来开展图床类业务。

客户端上传

在客户端使用uniCloud.uploadFile前,应该将以下域名配置到upload白名单。

bsppub.oss-cn-shanghai.aliyuncs.com

前端调用云存储API上传文件

代码语言:javascript
复制
uniCloud.uploadFile({
  cloudPath:"上传后云端显示的文件名",//可以重名,不支持子目录
  filePath:"本地需要上传的文件路径",
  success:(res)=>{//上传成功后的回调
    //res.fileID为文件上传成后的云端访问地址,可直接使用
  },
  fail:()=>{},//上传失败的回调
  onUploadProgress:()=>{//上传进度回调
    
  }
})

以下代码为从手机相册选取一张图片上传至云存储

代码语言:javascript
复制
//前端代码
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控制台,要么在云函数中操作。

在云函数操作云存储

上传

代码语言:javascript
复制
const res = await uniCloud.uploadFile({
  cloudPath:"上传后云端显示的文件名",
  fileContent:"文件的绝对路径或文件的buffer"
})

console.log(res.fileID);//文件上传后的云端访问地址

下面的代码演示了如何把图片从一个URL读取出来并上传到自己的云存储中

代码语言:javascript
复制
const image = await uniCloud.httpclient.request("图片的url");
    
const res = await uniCloud.uploadFile({
  cloudPath:"上传后云端显示的文件名",
  fileContent:image.data//文件的buffer
});

注意:如果是从客户端上传文件,不建议读取文件再通过传参传给云函数,再由云函数上传到云存储,应该在客户端直传云存储。

删除

代码语言:javascript
复制
const res = await uniCloud.deleteFile({
    fileList: [
        "fileID"//文件在云存储中的访问地址
    ]
});

云存储常用文件处理

在访问云存储中的图片或视频文件时,我们可以通过追加一些参数来即时处理文件。注意,处理是实时生效的,这并不会对你云存储中的文件产生任何改变。

图片缩放resize

可以通过图片缩放参数,调整图片大小,常常用来做各种不同尺寸的缩略图。

使用方法:

代码语言:javascript
复制
//fileID 示例 https://vkceyugu.cdn.bspapp.com/VKCEYUGU-ef89fa94-5d19-4f01-b2b8-edc1f4387edc/b98b33ba-1595-4fda-995a-6c4e17a9e2c5.png
fileID?x-oss-process=image/resize,其他参数

参数说明:

注意事项:

  • 原图限制
    • 图片格式只能是:JPG、PNG、BMP、GIF、WebP、TIFF。其中GIF格式的图片支持指定宽高缩放,不支持等比缩放(等比缩放情况下,动态图会变成静态图)。
    • 原图大小不能超过20 MB。
    • 宽或高不能超过30,000 px,且总像素不能超过2.5亿 px。动态图片(例如GIF图片)的像素计算方式为宽*高*图片帧数;非动态图片(例如PNG图片)的像素计算方式为宽*高
  • 缩放图限制 宽或高不能超过16,384 px,且总像素不能超过16,777,216 px。
  • 缩放优先级 如果图片处理URL中同时指定按宽高缩放和等比缩放参数,则只执行指定宽高缩放。
  • 缩放时只指定宽度或者高度
    • 等比缩放时,会按比例缩放图片。例如原图为200 px*100 px,将高缩放为100 px,则宽缩放为50 px。
    • 固定宽高缩放时,会将原图宽高按照指定值进行缩放。例如原图为200 px*100 px,将高缩放为100 px,则宽也缩放为100 px。
  • 如果缩放模式为mfit,且为目标缩放图的最长边l或者目标缩放图的最短边s指定了值,则l和s都会应用指定的值进行缩放。
  • 如果指定了缩放模式m,且为目标缩放图的宽度w或目标缩放图的高度h指定了值,则目标缩放图的最长边l或目标缩放图的最短边s的取值不会生效。
  • 目标缩放图比原图尺寸大时,默认返回原图。您可以增加limit_0参数放大图片。例如,https://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_500,limit_0

图片裁剪crop

可以通过图片裁剪参数,在原图上裁剪指定大小的矩形图片。

使用方法:

代码语言:javascript
复制
//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。
  • 如果从起点开始指定的宽度和高度超过了原图,将会直接裁剪到原图边界为止。

图片加水印

可以通过图片水印参数,为云存储中的图片文件增加水印文字或水印图。

使用方法:

代码语言:javascript
复制
//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编码。编码步骤如下:

  1. 将内容编码成Base64。
  2. 将结果中的部分编码替换。
    • 将结果中的加号(+)替换成短划线(-)。
    • 将结果中的正斜线(/)替换成下划线(_)。
    • 将结果中尾部的等号(=)省略。

注意事项:

  • 图片水印只能使用当前存储空间内的图片,网络或本地图片需上传至当前存储空间内方可使用。
  • 图片水印目前仅支持JPG、PNG、BMP、WebP、TIFF格式。
  • 单张图片最多支持添加3张不同的图片水印,且各个图片水印的位置不能完全重叠。
  • 文字水印暂不支持繁体中文。

图片格式转换

可以通过格式转换参数,转换云存储中图片文件的格式。

使用方法:

代码语言:javascript
复制
//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,...

图片质量改变

可以通过图片质量改变参数,在取出云存储中的图片文件是调节图片质量。

使用方法:

代码语言:javascript
复制
//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,其他图片格式不支持。

视频截取图片

可以通过视频截帧参数,取出云存储中视频文件指定帧的图片。

使用方法:

代码语言:javascript
复制
//fileID 示例 https://vkceyugu.cdn.bspapp.com/VKCEYUGU-ef89fa94-5d19-4f01-b2b8-edc1f4387edc/b98b33ba-1595-4fda-995a-6c4e17a9e2c5.png
fileID?x-oss-process=image/snapshot,其他参数

参数说明:

注意事项:

  • 仅支持对视频编码格式为H264和H265的视频文件进行视频截帧。
  • 视频截帧的图片是实时的,如需保存,需通自行上传至云存储
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大帅老猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 云存储基础
    • 客户端上传
      • 在云函数操作云存储
        • 上传
        • 删除
      • 云存储常用文件处理
        • 图片缩放resize
        • 图片裁剪crop
        • 图片加水印
        • 图片格式转换
        • 图片质量改变
        • 视频截取图片
    相关产品与服务
    图片处理
    图片处理(Image Processing,IP)是由腾讯云数据万象提供的丰富的图片处理服务,广泛应用于腾讯内部各产品。支持对腾讯云对象存储 COS 或第三方源的图片进行处理,提供基础处理能力(图片裁剪、转格式、缩放、打水印等)、图片瘦身能力(Guetzli 压缩、AVIF 转码压缩)、盲水印版权保护能力,同时支持先进的图像 AI 功能(图像增强、图像标签、图像评分、图像修复、商品抠图等),满足多种业务场景下的图片处理需求。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档