亚马逊s3无法在IE中打开pdf文件

时间:2014-07-02 02:49:12

标签: internet-explorer pdf amazon-s3 knox-amazon-s3-client

我将pdf上传到s3并使用了签名网址。传递amazonHeaders进行内容处理(我正在回顾内容处置的响应头)。为此,我在KNOX

中的client.js中添加了一个补丁
var signature = auth.signQuery({
        amazonHeaders: options && options.headers,
        secret: this.secret,
        date: epoch,
        resource: resource,
        verb: (options && options.verb) || 'GET',
        contentType: options && options.contentType,
        token: this.token,
    });

并传递options.headers

headers = "response-content-disposition:attachment; filename=#{file._id}"

但是我无法在IE中打开它,我可以在chrome中打开它。

我根本不知道我是否真的需要内容处理标题。因为当我尝试从本地主机/ expess nodejs server.it发送相同的响应。它在IE中自动打开。

localhost

这是Amazon / S3的回复

enter image description here

1 个答案:

答案 0 :(得分:1)

屏幕截图中的响应标题未显示Content-Disposition标题,因此该部分无效 - 但我不知道这是否是您的IE问题。

如果您确实想要Content-Disposition: attachment

您无需修改​​knox(任何更多)以添加自定义响应标头。你可以这样做:

var headers = { 'response-content-disposition': 'attachment;filename=test.pdf'};
var expires = new Date(); expires.setYear(2020);
var url = client.signedUrl('/test.pdf', expires, { qs: headers });

这给了我一个类似https://mikie-knox-test.s3-eu-west-1.amazonaws.com/test.pdf?Expires=1594497470&AWSAccessKeyId=AKIAIW2ON37WUIIUJ2NA&Signature=fUQyOmYuPM2dEMPTY%2FRkssK0oxw%3D&response-content-disposition=attachment%3Bfilename%3Dtest.pdf的网址。

(我认为您的代码中不需要#{file._id},这看起来像是来自ruby源的复制粘贴错误。)