【问题标题】:amazon s3 unable to open pdf file in IE亚马逊 s3 无法在 IE 中打开 pdf 文件
【发布时间】:2014-07-02 02:49:12
【问题描述】:

我将 pdf 上传到 s3 并使用签名的 url。将 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 中打开它。

我根本不知道我是否真的需要 content-disposition 标头。因为当我从本地主机/快递 nodejs server.it 尝试时,它会发送相同的响应。并在 IE 中自动打开。

这是来自 Amazon/S3 的响应

【问题讨论】:

  • 问题仅出在 Pdf 上。我尝试上传 PNG 它工作正常..
  • 你是什么意思,你“无法在 IE 中打开它?”当你尝试时会发生什么?没有什么?错误?浏览器窗口充满噪音?
  • 没有错误没什么。只是..一个灰色的窗口..
  • 您使用的是什么版本的 Windows 和 IE?你的 pdf 阅读器(及其版本)是什么?
  • 您是否尝试将 pdf 嵌入 iframe 或对象标签中?

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


【解决方案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​​ 源)。

【讨论】:

    猜你喜欢
    • 2018-01-22
    • 2015-02-03
    • 2012-08-23
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 2012-05-01
    • 2018-02-10
    相关资源
    最近更新 更多