AWS S3:使用“ response-content-disposition”强制下载文件

加内什·博瑟尔

很少的几行(下面)生成签名的URL,浏览器重定向到该URL以从S3下载文件。

当内容类型设置为八位位流时,我面临着一个众所周知的Chrome无法从S3下载pdf文件的问题。

解决方案是强制chrome下载文件,而不是尝试读取/打开文件。

我尝试添加“ response-content-disposition”和URL来签名,但是没有用。

生成url时如何使用“ response-content-disposition”标头?

    String codedFilename=  EncodingUtil.urlEncode(bucketPath,'UTF-8');

    String stringtosign = 'GET\n\n\n'+Lexpires+'\n/'+bucketName+'/'+codedFilename;

    String signed = make_sig(stringtosign); 

    String codedsigned = EncodingUtil.urlEncode(signed,'UTF-8');

    String url = serverURL+'/'+bucketName+'/'+codedFilename+'?AWSAccessKeyId='+awskey+'&Expires='+Lexpires+'&Signature='+codedsigned;

注意:-这是salesforce-apex语法。

加内什·博瑟尔
    String codedFilename=  EncodingUtil.urlEncode(bucketPath,'UTF-8');

    String stringtosign = 'GET\n\n\n'+Lexpires+'\n/'+bucketName+'/'+codedFilename+'?response-content-disposition=attachment; filename=abc.doc';

    String signed = make_sig(stringtosign); 

    String codedsigned = EncodingUtil.urlEncode(signed,'UTF-8');

    String url = serverURL+'/'+bucketName+'/'+codedFilename+'?response-content-disposition='+EncodingUtil.urlEncode('attachment; filename=abc.doc','UTF-8')+'&AWSAccessKeyId='+awskey+'&Expires='+Lexpires+'&Signature='+codedsigned;

源:无法覆盖s3中的内容处置标头

如果文档的内容类型为“应用程序/八位字节流”,则Chrome会出现问题(在这种情况下为pdf)。但是,如果内容类型为“二进制/八位字节流”,则可以使用chrome。

幸运的是,如果在上载时未设置nothig,S3会将下载的Content-Type默认设置为“ binary / Octet-stream”。

我的建议:-如果需要在上载时不知道内容类型的情况下将“任何”类型的文件发送到S3,只需不要设置它或将其设置为“二进制/八位流”。这样,Chrome会显示警告,但文件已下载。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

即使我使用Content-Disposition,PHP也会强制PDF文件下载:内联

来自分类Dev

AWS Cloudformation 从私有 S3 AWS4-HMAC-SHA256 下载文件

来自分类Dev

如何在不使用AWS CLI的情况下使用S3专用存储桶下载文件

来自分类Dev

使用Joomla 3强制下载文件

来自分类Dev

使用 cakephp 3 上传 AWS S3 文件

来自分类Dev

如何使用S3上托管的文件的回形针/雾设置Content Disposition标头?

来自分类Dev

无法使用PHP强制下载文件

来自分类Dev

如何使用JavaScript强制下载文件?

来自分类常见问题

使用Response :: download在laravel中下载文件

来自分类Dev

单独使用AWS S3或S3和Cloudfront进行视频下载

来自分类Dev

单独使用AWS S3或S3和Cloudfront进行视频下载

来自分类Dev

使用 C# 下载 URL Content-Disposition excel 文件

来自分类Dev

如何使用Rails从AWS S3获取对象URL(link)(API JSON Response)

来自分类Dev

在AWS S3上合并文件(使用Apache Camel)

来自分类Dev

使用Laravel从AWS S3中的文件检索标签

来自分类Dev

在AWS S3上合并文件(使用Apache Camel)

来自分类Dev

使用AWS CLI上传到S3时如何设置Content-Type?

来自分类Dev

从url下载文件并将其上传到AWS S3而不保存-node.js

来自分类Dev

AWS s3在特定文件夹中下载所有文件-使用PHP SDK

来自分类Dev

即使文件存在,使用python boto下载AWS S3文件仍返回404

来自分类Dev

使用AWS-SDK在Rails中下载用于Ruby的S3文件(对象)

来自分类Dev

使用 Nodejs 从 AWS S3 下载多个文件时出错

来自分类Dev

通过BITS下载AWS S3

来自分类Dev

通过BITS下载AWS S3

来自分类Dev

从AWS S3下载清单文件

来自分类Dev

AWS 按计划将文件下载到 s3

来自分类Dev

使用PHP从Amazon s3压缩并下载文件

来自分类Dev

使用Laravel从Amazon S3下载文件

来自分类Dev

Rails AWS S3删除文件

Related 相关文章

  1. 1

    即使我使用Content-Disposition,PHP也会强制PDF文件下载:内联

  2. 2

    AWS Cloudformation 从私有 S3 AWS4-HMAC-SHA256 下载文件

  3. 3

    如何在不使用AWS CLI的情况下使用S3专用存储桶下载文件

  4. 4

    使用Joomla 3强制下载文件

  5. 5

    使用 cakephp 3 上传 AWS S3 文件

  6. 6

    如何使用S3上托管的文件的回形针/雾设置Content Disposition标头?

  7. 7

    无法使用PHP强制下载文件

  8. 8

    如何使用JavaScript强制下载文件?

  9. 9

    使用Response :: download在laravel中下载文件

  10. 10

    单独使用AWS S3或S3和Cloudfront进行视频下载

  11. 11

    单独使用AWS S3或S3和Cloudfront进行视频下载

  12. 12

    使用 C# 下载 URL Content-Disposition excel 文件

  13. 13

    如何使用Rails从AWS S3获取对象URL(link)(API JSON Response)

  14. 14

    在AWS S3上合并文件(使用Apache Camel)

  15. 15

    使用Laravel从AWS S3中的文件检索标签

  16. 16

    在AWS S3上合并文件(使用Apache Camel)

  17. 17

    使用AWS CLI上传到S3时如何设置Content-Type?

  18. 18

    从url下载文件并将其上传到AWS S3而不保存-node.js

  19. 19

    AWS s3在特定文件夹中下载所有文件-使用PHP SDK

  20. 20

    即使文件存在,使用python boto下载AWS S3文件仍返回404

  21. 21

    使用AWS-SDK在Rails中下载用于Ruby的S3文件(对象)

  22. 22

    使用 Nodejs 从 AWS S3 下载多个文件时出错

  23. 23

    通过BITS下载AWS S3

  24. 24

    通过BITS下载AWS S3

  25. 25

    从AWS S3下载清单文件

  26. 26

    AWS 按计划将文件下载到 s3

  27. 27

    使用PHP从Amazon s3压缩并下载文件

  28. 28

    使用Laravel从Amazon S3下载文件

  29. 29

    Rails AWS S3删除文件

热门标签

归档