【问题标题】:Force S3 PDF to be viewed in browser instead of download强制 S3 PDF 在浏览器中查看而不是下载
【发布时间】:2020-01-21 13:37:12
【问题描述】:

所以你可以使用Content-Disposition: attachment强制下载

Content-Disposition: inline 是默认值,应该显示在浏览器中,它实际上适用于大多数文件,如 PNG、JPG 等。

但由于某种原因,当从 S3 生成预​​签名 URL 时,即使我不使用 content-disposition: 附件标头,PDF 文件也会始终强制下载。

我希望能够在浏览器允许的情况下在浏览器中打开 PDF

我正在使用来自 S3 客户端 http://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURLJavaSDK.html 的预签名 URL 生成调用

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

    检查您文件的元数据并从该文件中删除 Content-Disposition 条目。并根据文件类型设置内容类型

    喜欢 文本文件 Content-Type='text/plain'

    image png Content-Type='image/png'

    pdf 内容类型=application/pdf

    pdfxml 内容类型=application/vnd.adobe.pdfxml

    如果您的文件的 Content-Type 是 binary/octet-stream 那么它将下载而不是显示。

    谢谢

    【讨论】:

      【解决方案2】:

      您必须如下设置您的 putObject 参数才能查看 pdf 而不是下载。

       params = {
              Bucket: process.env.S3_BUCKET,
              Key: <fileName>,
              Body: <fileContent>,
              ContentDisposition:"inline",
              ContentType:"application/pdf"
          };
      

      【讨论】:

        【解决方案3】:

        您还需要正确设置Content-Type。浏览器会检查 content-type 值,如果它不知道如何显示,它总是会下载文件。

        【讨论】:

          【解决方案4】:

          您需要提供这两个元数据才能查看文件而不是下载:

          Content-Disposition: attachment
          Content-Type: application/pdf
          

          【讨论】:

            猜你喜欢
            • 2013-08-22
            • 2013-02-21
            • 2014-01-29
            • 2016-07-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-01-23
            • 2011-09-11
            相关资源
            最近更新 更多