题目没说清 具体需求是 页面上需要增加一个下载图片的功能。后台这个时候可以给我一个图片的src,但众所周知,链接到图片的src后只会在新页面打开图片,而不会弹出下载提示,让用户去下载图片。
我本以为,js是做不到这样的功能的,还是自己的知识面过窄了,请教了我们这边的技术牛后,果真得到了我想要的答案。
可惜的是,PM觉得这个需求有些不够尽善,在我刚准备埋代码的时候,把需求砍掉了。我先记录在这里,闲暇的时候可以研究下。
先说下基本的原理,这块涉及到了http的content-type,我的薄弱点,这块的知识要恶补一下了。
用js创建一个form,进行post提交,提交的地址返回图片数据。
post的响应中的header需要以下两个内容:
Content-Type application/octet-stream
Content-Disposition attachment;filename=文件名.png
content-type保证弹出保存对话框,第二个会给出默认的文件名
浏览器就根据Content-Type来决定如何处理接口中返回的图片资源。我度娘了一下,任何文件都要下载 ".*"="application/octet-stream",代码因为很多不是我写的,就不贴了,等我整理好之后,看能否写成一个小组件。
估计以后项目里类似的需求会很多。
我现在又很多的疑问,比如,js能否改变一个图片的内容呢,即在图片上写上一些文字,或者,能否将一个页面 以图片的形式存下来,我目前觉得 应该是可以的,现在的截图工具不是很多么,具体怎么实现,接下来要好好研究一下。
PS : 发现目前开发中,可改进的东西太多了,克服懒散克服懒散。好好干活。