searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

对象存储融合版,通过浏览器打开文件URL可以不下载而是预览吗?

2023-08-24 02:10:28
71
0

登录控制台,点击存储桶中文件的详情,可以获取文件的url。

 

有客户反馈,通过浏览器打开图片文件的url,能不能不要直接下载文件,而是预览?

这就跟文件的元数据参数Content-Type的值有关了。

Content-Type用于标识发送或接收数据的类型,浏览器根据该参数来决定数据的打开方式。Content-Type多用于指定一些客户端自定义的文件,以及一些媒体文件的打开方式,比如image/png、 image/jpg 是图片类型,video/mpeg、 video/mp4是视频类型,text/plain、 text/html是文本类型, 浏览器针对不同的Content-Type会有不同的操作,比如图片类型可以预览,视频类型可以播放,文本类型可以直接打开。而如果Content-Type是binary/octet-stream类型会进行下载。

在控制台对应文件的详情页面,可以看到文件的Content-Type值,如下图的文件URL就是直接进行下载。

那我们如何指定文件的Content-Type呢?

有两个办法:

  • 在上传文件的时候,指定文件的Content-Type值;
  • linux环境可以通过s3cmd命令修改文件的Content-Type值;

上传文件指定Content-Type

通过控制台上传文件,控制台会自动识别文件类型,设置Content-Type为对应的值,如果是无法识别的类型,就会设置为binary/octet-stream。当然,也可以人为进行设置:点击“上传文件”后,点击“设置对象属性”-“添加参数”,填写Content-Type的值。

如果是通过存储的SDK进行上传,那么就要注意了:SDK默认的Content-Type值为binary/octet-stream,所以这也是很多用户通过SDK上传的文件不能进行预览的原因。

这就需要用户使用SDK上传时,指定Content-Type为对应的值,相关使用说明可以查看官网的SDK使用章节,以python SDK为例如下图所示:

 

已经上传的文件修改Content-Type的办法:

  • 重新上传文件,上传时指定对应Content-Type的值;
  • linux环境可以使用s3cmd工具修改Content-Type的值。

PS:s3cmd为业界通用工具,可网上搜索具体使用方法。

配置s3cmd工具以后,可以使用如下命令进行修改:

s3cmd --mime-type=image/jpeg --recursive --exclude=* --include=*.jpeg modify s3://桶名

--include=后面为指定文件名,也可以模糊匹配文件后缀进行批量修改。

0条评论
作者已关闭评论
Mr. 油
89文章数
0粉丝数
Mr. 油
89 文章 | 0 粉丝
原创

对象存储融合版,通过浏览器打开文件URL可以不下载而是预览吗?

2023-08-24 02:10:28
71
0

登录控制台,点击存储桶中文件的详情,可以获取文件的url。

 

有客户反馈,通过浏览器打开图片文件的url,能不能不要直接下载文件,而是预览?

这就跟文件的元数据参数Content-Type的值有关了。

Content-Type用于标识发送或接收数据的类型,浏览器根据该参数来决定数据的打开方式。Content-Type多用于指定一些客户端自定义的文件,以及一些媒体文件的打开方式,比如image/png、 image/jpg 是图片类型,video/mpeg、 video/mp4是视频类型,text/plain、 text/html是文本类型, 浏览器针对不同的Content-Type会有不同的操作,比如图片类型可以预览,视频类型可以播放,文本类型可以直接打开。而如果Content-Type是binary/octet-stream类型会进行下载。

在控制台对应文件的详情页面,可以看到文件的Content-Type值,如下图的文件URL就是直接进行下载。

那我们如何指定文件的Content-Type呢?

有两个办法:

  • 在上传文件的时候,指定文件的Content-Type值;
  • linux环境可以通过s3cmd命令修改文件的Content-Type值;

上传文件指定Content-Type

通过控制台上传文件,控制台会自动识别文件类型,设置Content-Type为对应的值,如果是无法识别的类型,就会设置为binary/octet-stream。当然,也可以人为进行设置:点击“上传文件”后,点击“设置对象属性”-“添加参数”,填写Content-Type的值。

如果是通过存储的SDK进行上传,那么就要注意了:SDK默认的Content-Type值为binary/octet-stream,所以这也是很多用户通过SDK上传的文件不能进行预览的原因。

这就需要用户使用SDK上传时,指定Content-Type为对应的值,相关使用说明可以查看官网的SDK使用章节,以python SDK为例如下图所示:

 

已经上传的文件修改Content-Type的办法:

  • 重新上传文件,上传时指定对应Content-Type的值;
  • linux环境可以使用s3cmd工具修改Content-Type的值。

PS:s3cmd为业界通用工具,可网上搜索具体使用方法。

配置s3cmd工具以后,可以使用如下命令进行修改:

s3cmd --mime-type=image/jpeg --recursive --exclude=* --include=*.jpeg modify s3://桶名

--include=后面为指定文件名,也可以模糊匹配文件后缀进行批量修改。

文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0