需求:

点击图片的下载链接直接触发浏览器下载,而不是浏览器打开图片。

思路:

1、谷歌浏览器在点击图片链接的时候往往是直接打开图片而不是下载;

2、首先考虑的是在a标签上增加download属性来触发下载,但是由于该属性有跨域限制,导致失效;

3、其次考虑在Response头上增加“Content-Disposition“字段,格式为“Content-Disposition=attachment;filename=abc.png”;

4、由于文件存储在OSS上,给的下载地址是直接从OSS下载的,经过查询阿里云的文档后,发现只要在上传的Form表单中增加Content-Disposition属性,下载时OSS服务器返回的Response中就会自动携带了该字段。

相关资料:

截取自阿里云文档中关于对上传到OSS描述的部分资料:

说明 OSS支持HTTP协议规定的5个请求头:Cache-Control、Expires、Content-Encoding、Content-Disposition、Content-Type。如果上传Object时设置了这些请求头,则该Object被下载时,相应的请求头值会被自动设置成上传时的值。

名称类型是否必选描述

Authorization

字符串

表示请求本身已被授权,详情请参见RFC2616。

通常情况下Authorization是必选请求头,但如果采用了URL包含签名,则不用携带该请求头。详情请参见在URL中包含签名。

默认值:无

Cache-Control

字符串

指定该Object被下载时网页的缓存行为,详情请参见RFC2616。

默认值:无

Content-Disposition

字符串

指定该Object被下载时的名称,详情请参见RFC2616。

默认值:无

截取自MSDN中关于对Content-Disposition描述的部分资料:

在常规的HTTP应答中,Content-Disposition 响应头指示回复的内容该以何种形式展示,是以内联的形式(即网页或者页面的一部分),还是以附件的形式下载并保存到本地。

作为消息主体中的消息头

在HTTP场景中,第一个参数或者是inline(默认值,表示回复中的消息体会以页面的一部分或者整个页面的形式展示),或者是attachment(意味着消息体应该被下载到本地;大多数浏览器会呈现一个“保存为”的对话框,将filename的值预填为下载后的文件名,假如它存在的话)。

Content-Disposition: inline

Content-Disposition: attachment

Content-Disposition: attachment; filename="filename.png"

代码:

/** formData为上传的表单对象 **/

formData.append('Content-Disposition', 'attachment;filename=' + file.name); // file.name就是要下载的文件的名称

实现的效果:

charles抓包显示Response中携带了该字段:

在谷歌浏览器下表现为直接下载而不是打开图片:

oss pdf浏览器直接下载_阿里云oss直接下载的小技巧相关推荐

  1. maven配置阿里云_阿里云OSS PicGo 配置图床教程 超详细

    阿里云OSS和PicGo配置图床教程 超详细 废话不多说,直接开始 购买阿里云OSS服务 登录阿里云 打开侧边栏,选择对象存储OSS,如下图: 对象存储界面右部选择创建Bucket,如下图所示: 之后 ...

  2. java oss 批量传输_阿里云OSS对象存储,服务端签名后直传阿里云OSS

    继续上一章文章,这次要操作的是,浏览器请求服务要到签名后直传给OSS对象存储. 1.写好服务端的方法,传给前台相应的密钥 @Resource OSSClient ossClient; @Value(& ...

  3. modelsim 各版本 网盘_阿里云盘官方下载-阿里云盘最新版本 v1.0.1

    阿里云盘app下载分享,阿里云盘是一款非常实用的手机云存储服务软件,原名为"阿里云网盘",存储空间大,操作速度快,非常便捷好用,欢迎下载使用~ [软件简介] 阿里云网盘是阿里云团队 ...

  4. oss子账号_阿里云OSS子账号RAM权限设置方法

    怕oss管理人员误操作把oss里面的Bucket删除怎么办?创建阿里云子账号即可.这里说下阿里云OSS子账号RAM权限设置方法. 最新更新:阿里云RAM权限生成工具 首先进入阿里云后台设置子账号的页面 ...

  5. 一文读懂什么是阿里云OSS,如何使用Java操作阿里云OSS?

    一.什么是阿里云OSS OSS: Object Storage Service 对象存储服务是一种海量.安全.低成本.高可靠的云存储服务,适合存放任意类型的文件.容量和处理能力弹性扩展,多种存储类型供 ...

  6. uc浏览器邀请码_阿里云Teambition网盘收到邀请码,上传下载不限速!!!

    微信公众号更新以后,推送不是按照优先来的:你们可以把我的微信公众号点击设置为星标,以便于及时的接收信息. 哈喽!大家好,我是斜杠君,每天早上八点推文(偶然会凌晨),还有关键词是最下面的数字.底部点赞. ...

  7. fastadmin 阿里云oss解决访问图片是下载

    阿里云oss的上传策略默认是公网访问是下载 需要去 修改插件里的这个文件 addons/alioss/libary/oss/core/MimeTypesw.php 如果之前的也想全部是浏览 找到对应图 ...

  8. 阿里云OSS上传下载和短信验证码

    (一):首先得在阿里云OSS上开通相关的服务,具体哪里开通及如何操作请参考此链接: https://help.aliyun.com/document_detail/31883.html?spm=517 ...

  9. Springboot集成 阿里云OSS上传及下载

    文章目录 使用手册 maven依赖及环境配置 定义配置bean及OSS工具类 定义UploadController和DownloadController 下载接口优化为返回重定向oss路径 遇到的问题 ...

最新文章

  1. php for windows二进制包,PHP5ForWindowsVC9-x865.4.3安装版
  2. android调频收音机代码,android 收音机 FM 驱动 hal层 框架层以及应用层代码
  3. python partition函数_如何使用正确的姿势进行高效Python函数式编程?
  4. 归纳几点html编码要素--杜绝浏览器不兼容
  5. 微型计算机硬盘为什么要分区,为什么懂电脑的人,都说硬盘不需要分区?看完你就知道了...
  6. SVN遇到Can't convert string from 'UTF-8' to native encoding(转)
  7. potplayer 多个进程_什么是进程
  8. 百度搜索大数据:“摆摊技巧”搜索热度暴涨655%;中国电信:将逐步关闭3G网络业务;IntelliJ IDEA新版发布|极客头条...
  9. 小白初学MySQL----Win7下关于安装和初步使用~
  10. python打包exe_Python | 用Pyinstaller打包发布exe应用
  11. layui获取select 文本_小程序富文本编辑器editor初体验
  12. 基于特定实体的文本情感分类总结(PART II)
  13. oracle语句_ORACLE 常用语句实例:CTE MERGE 结合
  14. 批量识别图片大致不相同图片_一款非常优秀的文字识别工具,可以批量图片识别文字...
  15. Win 10系统怎么确认是否打开了虚拟化
  16. 哔哩哔哩下载的视频怎么找不到?
  17. 第几天(c语言实现,两种做法)
  18. 如何使postman变为汉化版
  19. 微信小程序设置背景图片
  20. 牛客小白月赛24 J.建设道路

热门文章

  1. 祖-玛珑全新馥郁系列香氛“香根草与香子兰”上市
  2. java 把jsp 保存成图片_将jsp页面转化为图片或pdf(一)(qq:1324981084)
  3. Linux命令之磁盘分区fdisk
  4. 0013基于单片机电子琴控制系统设计
  5. MySQL数据库—InnoDB行存储格式
  6. C# 绘制箭头的方法,仿微信截图的箭头
  7. C语言编程>第十周 ⑧ 请编写函数fun,其功能是:将两个两位正整数x、y合并成一个整数放在z中。合并的方式是:将x的十位和个位依次放在z的十位和千位上,y十位和个位依次放在z的百位和个位上。
  8. SAP物料移动类型和自动科目设置
  9. 记我亲爱的导师米新江老师---身残志不残
  10. 大数据预科班1~4天习题