在 s3 文件上更改 header

Change header on s3 file

如果我在 s3 上有一个文件,我该如何更改该文件的元数据?

看起来我可以 "copy" 它与新的 header 相同的位置,这实际上是同一件事。

我使用 knox 作为节点客户端来执行此操作。有问题的文件已经将 Content-Type header 设置为 video/mp4,但我想将其更改为 application/octet-stream。这样做的原因是这样 link 会触发浏览器下载资源,而不是在浏览器中显示资源 window.

Link 至 knox source 此函数

var filename = "/example/file.mp4",
    headers = {'Content-Type': "application/octet-stream"};

client.copyFile(filename, filename, headers, function(error, resp) {
  //response is successful
});

响应成功,但是当我在 s3 中重新加载资源时,我没有看到 headers 发生了变化。

我可以看到底层的 API 调用是这样的:

'PUT /example/file.mp4 HTTP/1.1\r\nContent-Type: application/octet-stream
x-amz-copy-source: /bucket/example/file.mp4
Content-Length: 0\r\nDate: Thu, 28 Jan 2016 21:13:12 GMT
Host: cc-video-archives-dev.s3.amazonaws.com
Authorization: <redacted>=\r\nConnection: close\r\n\r\n',

我错过了这个 header:

"x-amz-metadata-directive": "REPLACE"

var filename = "/example/file.mp4",
  headers = {
    "x-amz-metadata-directive": "REPLACE",
    'Content-Type': "application/octet-stream"
  };

client.copyFile(filename, filename, headers, function(error, resp) {
  //response is successful
});