在前端开发中,有时候需要对一些文件链接进行特殊处理,比如对于一些图片链接或者PDF链接,有时我们需要通过浏览器打开进行预览,有时又不希望通过浏览器进行打开,而是希望能够直接下载到本地。但现实效果却往往跟我们相反,我们希望浏览器打开时,他却直接下载,我们希望浏览器下载时,他反而又在新的标签页直接打开文件。
其实造成这种情况,和响应头里
content-disposition
的属性值有关,
content-disposition
是 MIME 协议的扩展 ,其作用就是用来处理一些文件的显示问题,
content-disposition
的值为
inline
时,表示它可以显示在网页内,或作为网页,此时浏览器会自动进行预览,
content-disposition
的值为
attachment
时,表示它应该下载,大多数浏览器呈现“另存为”对话框,如果filename存在值,也会预填入文件名。
了解了相关原理,就很好实现自己想要的方式了。如果只是针对个人电脑,可以通过下载一些浏览器插件,通过更改响应头
content-disposition
的值,进而实现自己想要的效果,但是如果是发布到生产,供其他用户使用,就需要要求后端开发按照自己的需求配置相关文件响应头中
content-disposition
的值,因为不可能要求每个用户都去安装相应的插件。
content-disposition 是 MIME 协议的扩展 ,其作用就是用来处理一些文件的显示问题, content-disposition的值为inline时,表示它可以显示在网页内,或作为网页,此时浏览器会自动进行预览, content-disposition的值为attachment时,表示它应该下载,大多数浏览器呈现“另存为”对话框
图片链接
二:请求后不显示图片,
直接
进行
下载
如果 Content-Type 是 application/octet-stream 或者 multipart/form-data 请求
图片链接
后是
直接
下载
。
使用S3云存储上传图片之后,获得图片地址,在
浏览器
中输入url之后,图片默认
下载
,而不是
预览
。查了一下, s3默认的content-type是binary/octet-stream,这个类型在
浏览器
中默认是
下载
数据,把content-type改成image/png;image/jpg;image/git 这样图片就可以在
浏览器
中
预览
了。
self.s3_client.put_object(Body=img_data, Bucket=self.s3_config.get("bucket"), Key=img
主机记录 随便填什么 aaa , bbb 都行
解析线路 默认
记录值 填你的bucketname 就是你存储
文件
的bucket的名字 然后 . 域名所在区域 上海就是oss-cn-shanghai 然后 . aliyuncs.com
TTL 默认的 10分钟不用改
配置完成后,在对象存储的bucket列表中找到你存放
文件
的bucket,点击进入,并点击左侧的传输管理中的域名管理
淡然自若_blog: