相关文章推荐

简介: OSS通过传入"x-oss-persistent-headers"这个头,支持指定非"x-oss-meta-"开头的usermeta,满足特定用户特定场景的需求

OSS支持用户在上传时指定"x-oss-meta-"前缀的header作为自定义header,用于存储文件的一些标识信息等自定义的信息,并在下载(GetObject/HeadObject)时作为返回头返回给用户。但是在某些场景下用户需要使用非"x-oss-meta-"前缀的header作为自定义header,比如用户的数据原来存储在自建的存储设备上,并且自定义了一些header,现在数据迁移到OSS上,需要保持这些header不变,因此OSS提供了相应的机制用来实现这个需求。

一 传入方式

1、通过"x-oss-persistent-headers"这个请求头传入

这个请求头的格式如下:

x-oss-persistent-headers: key1:base64_encode(value1),key2:base64_encode(value2)....

其中key1/key2等为自定义的header,value2/value2等为对应自定义header的值,base64_encode指做base64编码,即将自定义header和对应值的base64编码作为一个key-value对用冒号连接,然后用逗号将所有的key-value对连接起来,放在x-oss-persistent-headers这个header中即可。

例子:假如我要自定义两个header,分别为myheader1/myheader2,值分别为myvalue1/myvalue2,则需要在上传时指定下面这个头

x-oss-persistent-headers:myheader1:bXl2YWx1ZTE=,myheader2:bXl2YWx1ZTI=

这种方式适用于PutObject()/CopyObject()/AppendObject()/CompleteMultipartUpload()上传方式

2、通过"x-oss-persistent-headers"这个表单域传入

这个表单域的值格式与上面1所述相同,这种传入方式适用于PostObject(),即表单上传

3、镜像回源时源站返回"x-oss-persistent-headers"

如果用户通过OSS的镜像回源功能,也想保存类似的自定义header,则需要镜像源站返回"x-oss-persistent-headers"头,格式与1所述相同。这种方式适用于镜像回源。

二、访问方式

通过GetObject()/HeadObject()接口,自定义的usermeta会通过返回头的方式返回给用户,比如上例,就会在回应头中增加两个头

myheader1:myvalue1

myheader2:myvalue2

接上述例子,上传时的完整的请求如下:

PUT /tmp HTTP/1.1

Host: 067365.oss-cn-hangzhou.aliyuncs.com

Accept-Encoding: identity

Content-Length: 19

User-Agent: aliyun-sdk-python/0.3.7 (Linux/2.6.32-220.23.2.ali1089.el5.x86_64/x86_64;2.7.8)

Host: 067365.oss-cn-hangzhou.aliyuncs.com

Date: Wed, 28 Feb 2018 02:03:25 GMT

x-oss-persistent-headers: myheader1:bXl2YWx1ZTE=,myheader2:bXl2YWx1ZTI=

Content-Type: application/octet-stream

Authorization: OSS a1nBNgkzzxcQMf8u:AT2DUCaIh4g9KLxEGmga2K82lf8=

for user meta test

HTTP/1.1 200 OK

Server: AliyunOSS

Date: Wed, 28 Feb 2018 02:03:25 GMT

Content-Length: 0

Connection: keep-alive

x-oss-request-id: 5A960DEDC46757366ADDB10D

ETag: "0F07FE95A928BB5A491AEFD31D6911AA"

x-oss-hash-crc64ecma: 13270199186025944929

Content-MD5: Dwf+lakou1pJGu/THWkRqg==

x-oss-server-time: 103

下载文件时完整请求和响应如下:

GET /tmp HTTP/1.1

User-Agent: curl/7.15.5 (x86_64-koji-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5

Host: 067365.oss-cn-hangzhou.aliyuncs.com

Accept: */*

HTTP/1.1 200 OK

Server: AliyunOSS

Date: Wed, 28 Feb 2018 02:24:57 GMT

Content-Type: application/octet-stream

Content-Length: 19

Connection: keep-alive

x-oss-request-id: 5A9612F95C44F0A86ADF3213

Accept-Ranges: bytes

ETag: "0F07FE95A928BB5A491AEFD31D6911AA"

Last-Modified: Wed, 28 Feb 2018 02:03:25 GMT

x-oss-object-type: Normal

x-oss-hash-crc64ecma: 13270199186025944929

x-oss-storage-class: Standard

myheader1: myvalue1

myheader2: myvalue2

Content-MD5: Dwf+lakou1pJGu/THWkRqg==

x-oss-server-time: 92

for user meta test

四、限制条件

  • 1. 通过这种方式指定的自定义header,不能以"x-oss-"为前缀,比如可以指定"myheader",但是不能指定"x-oss-myheader"
  • 2. 不能指定HTTP规定的标准头,比如host/content-md5/origin/range等等
  • 3. 如果上传时传入了与指定的自定义header相同的header,则两个header的值要保持相同。比如通过"x-oss-persistent-headers"指定了myheader,同时在请求头中单独传入了myheader,则两个header的值要相同
  • 4. 这种方式指定的自定义header也属于usermeta的范畴,因此也有最多8KB的限制,即所有的usermta总大小不能超过8KB
简介:OSS通过传入"x-oss-persistent-headers"这个头,支持指定非"x-oss-meta-"开头的usermeta,满足特定用户特定场景的需求 OSS支持用户在上传时指定"x-oss-meta-"前缀的header作为自定义header,用于存储文件的一些标识信息等自定义的信息,并在下载(GetObject/HeadObject)时作为返回头返回给用户。但是在某些场景下用户需要使用非"x-oss-meta-"前缀的header作为自定义header,比如用户的数据原来...
之前写过一篇发送文件消息的,原生input上传文件(聊天发送文件消息),那么这次的需求就是更改上传地址,使用阿里云 OSS 上传。 那么,这次选择使用elementUI的upload插件,样式各位大哥根据自己的需求实现吧。 要使用 OSS ,首先需要安装,引入,创建,这里就不详解了,推荐一遍文章:阿里 oss 前端上传使用。 这位大哥是基于promise来创建 OSS ,也可以选择不使用Promise: data(){ return { oss Config: { // oss Config 的内
java.lang.reflect.InvocationTargetException     at sun.reflect.GeneratedMethodAccessor331.invoke(Unknown Source)     at sun....
chrome更新到94之后,会自动阻止发送不安全的内网请求 比如,你从 http://www.website.com 发送请求到 http://192.168.0.1 的时候,就会被阻止,并且报这样的错: net::ERR_FAILED Network Error (Ensure private network requests are made from secure contexts,其实就是让你把服务改成https的) 解决办法,就是关闭这个新特性,不要让它禁用 ①打开Chrome实验功能
一 :url相关 1:url概念:(简单的理解)URL是(UniformResourceLocator,统一资源定位符)的缩写,它是WWW的统一资源定位标志,就是指网络地址。 2:url组成 : 协议部分 ,一般是是http协议,https协议,这两种很常见。 3 : 服务器的主机地址,可以是域名,主机名,ip地址,通俗讲,就是一种标识。 4 :端口 : 这是服务器设定的,url里面可以不包括端口的,因为一般是服务器默认的,所以用户在访问url链接时可以不用指明端口号的。 5 :路径,当然是访问资源所在的
阿里云存储 OSS 使用技巧之一:在 OSS 上读写文件 从你的代码中,把fopen()、fclose()这类的函数删掉吧!取而代之的是RESTful风格的HTTP请求:写文件是PUT;读文件是GET;获取文件属性是HEAD;删除文件是DELETE。 在搭建好的 OSS Python开发环境下,直接用上步声明的my_store对象创建并写入一个新文件( OSS 称之为Object)的代码如下: res =
Run time Error: Assertion `x >= 0. && x <= 1.' failed. input value should be between 0~1, but got -0.234535 at c:\new-builder_3\win-wheel\pytorch\aten\src\thnn\generic/BCECriterion.c:62
ARM OSS 提供了 自定义 上传回调的功能,您可以通过设置上传回调URL,在文件上传时,ARM OSS 会向指定的 URL 发送 HTTP POST 请求,通知您文件上传的状态和相关信息。 要设置 自定义 上传回调,您需要完成以下步骤: 1. 创建一个用于接收上传回调请求的服务器或者服务。 2. 在 ARM OSS 管理控制台或者通过 SDK 创建文件上传任务时,设置上传回调 URL。 3. 在您的服务器或者服务中,编写处理上传回调请求的代码,根据请求中的信息,执行相关的操作(例如记录上传日志、通知上传完成等)。 以下是一个处理上传回调请求的示例代码: const http = require('http'); http.create Server ((req, res) => { let body = ''; req.on('data', chunk => { body += chunk.toString(); req.on('end', () => { const result = JSON.parse(body); // 处理上传回调请求,例如记录上传日志、通知上传完成等 console.log(result); res.end(); }).listen(3000); 在上述示例代码中,我们创建了一个 HTTP 服务器,并监听 3000 端口。当收到上传回调请求时,我们将请求体解析为 JSON 对象,并输出到控制台,最后发送响应。 注意:为了保证上传回调的可靠性,您需要在服务器或者服务中处理可能的错误和异常,例如请求超时、网络错误等。您也可以在上传回调请求中返回 HTTP 状态码和错误信息,用于后续的处理和排查。 希望以上信息能够对您有所帮助。
解决Navicat不能连接mysql,提示错误 2003-Can‘t connect to MySql server on ‘localhost‘(10061) yuli7788: 不错不错,可以用的。 nginx设置域名跳转另一个域名 宫保鸡丁好吃: 感谢老哥,所写即我所需。
 
推荐文章