2

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

看起来我可以将它“复制”到具有新标题的相同位置,这实际上是同一件事。

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

链接到此功能的knox 源

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

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

响应成功,但是当我在 s3 中重新加载资源时,我看不到标头已更改。

我可以看到底层 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',
4

1 回答 1

1

我错过了这个标题:

"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
});
于 2016-04-27T19:20:48.143 回答