最后更新于

腾讯云对象存储COS自定义Headers


在项目开发中,经常需要支持从腾讯云COS下载文件时指定特定的文件名,特别是包含中文字符的文件名。直接重命名文件存储到COS可能导致在iPhone或Safari浏览器中下载时出现乱码问题 📱。

本文将介绍通过设置自定义Headers来解决这个问题,实现指定文件名和文件类型的下载行为。

⚠️ 重要说明

归档存储、深度归档存储类型的对象,仅支持在上传时设置自定义Headers,不支持对已上传的对象设置自定义Headers。

🚀 操作步骤

进入COS控制台

登录 对象存储控制台

在左侧导航栏中,单击存储桶列表,进入存储桶列表页面。

找到对象所在的存储桶,单击其存储桶名称,进入存储桶管理页面。

在左侧导航栏中,选择文件列表,进入文件列表页面。

  1. 找到需要自定义头部的对象,在其右侧操作栏中,单击更多 > 自定义头部进行设置。若您需要对多个对象自定义头部,可勾选多个对象,并单击上方的更多操作 > 自定义头部进行设置。

  2. 在弹出的窗口中,选择需要设置的元数据头部参数类型,输入对应的元数据值,单击确定即可。 COS 提供了以下6种对象 HTTP 头部标识供配置。头部配置说明如下:

HTTP 头部说明示例
Content-Type文件的 MIME 信息image/jpeg
Cache-Control文件的缓存机制no-cache:不可直接使用缓存,而是先到服务端验证 Object 是否已更新。如果 Object 已更新,表明缓存已过期,需从服务端重新下载 Object;如果 Object 未更新,表明缓存未过期,此时将使用本地缓存。max-age=200:缓存内容的相对过期时间,单位为秒。
Content-DispositionMIME 协议的扩展attachment; filename=“example.txt”。如果附件名为中文,则需要经过 URL 编码,示例为attachment; filename* = UTF-8' '%E4%B8%AD%E6%96%87.txt
Content-Encoding文件的编码格式gzip
Expires用来控制缓存的失效日期Wed, 21 Oct 2015 07:28:00 GMT
x-cos-meta-[自定义后缀]用户自定义内容x-cos-meta-via: homepage**注意:**头部名称仅支持减号(-)、数字、英文(a~z)。英文字符的大写字母会被转成小写字母,不支持下划线(_)在内的其他字符。

示例

在 APPID 为 1250000000,创建存储桶名称为 examplebucket-1250000000。存储桶根目录下上传了对象 exampleobject.txt。

未自定义对象的 HTTP 头部时,浏览器或客户端下载时得到的对象头部范例如下:

请求

GET /exampleobject.txt HTTP/1.1
Host: examplebucket-1250000000.cos.ap-beijing.myqcloud.com
Date: Fri, 10 Apr 2020 09:35:16 GMT
Authorization: q-sign-algorithm=sha1&q-ak=AKID8A0fBVtYFrNm02oY1g1JQQF0c3JO****&q-sign-time=1586511316;1586518516&q-key-time=1586511316;1586518516&q-header-list=date;host&q-url-param-list=&q-signature=1bd1898e241fb978df336dc68aaef4c0acae****
Connection: close

响应

HTTP/1.1 200 OK
Content-Type: text/plain
Access-Control-Allow-Origin: *
Last-Modified: Fri, 10 Apr 2020 09:35:05 GMT 

添加如下配置:

参数
Content-Typeimage/jpeg
Cache-Controlno-cache
Content-Dispositionattachment; filename* = UTF-8’ ‘%E4%B8%AD%E6%96%87.jpeg
x-cos-meta-md51234

再次发起请求,浏览器或客户端得到的对象头部范例如下:

请求

GET /exampleobject.txt HTTP/1.1
Host: examplebucket-1250000000.cos.ap-beijing.myqcloud.com
Date: Fri, 10 Apr 2020 09:35:16 GMT
Authorization: q-sign-algorithm=sha1&q-ak=AKID8A0fBVtYFrNm02oY1g1JQQF0c3JO****&q-sign-time=1586511316;1586518516&q-key-time=1586511316;1586518516&q-header-list=date;host&q-url-param-list=&q-signature=1bd1898e241fb978df336dc68aaef4c0acae****
Connection: close

响应

HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Type: image/jpeg
Content-Disposition: attachment; filename* = UTF-8' '%E4%B8%AD%E6%96%87.jpeg
x-cos-meta-md5: 1234
Access-Control-Allow-Origin: *
Last-Modified: Fri, 10 Apr 2020 09:35:05 GMT 

参考文章:

https://cloud.tencent.com/document/product/436/13361