应用场景
使用学校的s3服务,需要控制文件在浏览器中是预览还是下载。
背景知识
通过url访问到的每一个文件,都会返回一个Content-Type,也就是所谓的MIME 类型(媒体类型)
| MIME 类型 | 代表含义 | 浏览器默认行为 |
|---|---|---|
application/pdf |
这是一个 PDF 文件 | 使用内置 PDF 查看器打开 |
application/octet-stream |
这是一个“任意二进制流”(不明确的文件类型) | 浏览器通常会提示下载而不是打开 |
解决方案
如果需要默认行为是预览,就设置媒体类型为application/pdf
如果需要默认行为是下载,就不设置媒体类型,默认的媒体类型就是application/octet-stream
代码示例
我用的golang的示例
1 | _, err = svc.PutObject(&s3.PutObjectInput{ |
文件示例
原理图例
可以看到预览PDF中的Content-type是application/pdf
可以看到下载PDF中的Content-type是application/octet-stream