前端的非同源图片下载

由于再日常开发中,公司往往会有一个图片服务器。在要求前端实现图片下载时往往会有非同源的问题。

非同源使用download属性默认会预览而不是下载。

由于图片服务器往往是允许跨域的,所以我们在这里用ajax get请求的方式,获取图片blob文件,再由

window.URL.createObjectURL

(专门用来将blob或者file读取成一个url的可被img,video,audio 识别显示出来的url)

 1 function downloadImg(src,name){
 2         var x=new XMLHttpRequest();       //禁止浏览器缓存;否则会报跨域的错误
 3         x.open("GET", src+‘?t=‘+new Date().getTime(), true);
 4         x.responseType = ‘blob‘;
 5         x.onload=function(e){
 6             var url = window.URL.createObjectURL(x.response)
 7             var a = document.createElement(‘a‘);
 8             a.href = url
 9             a.download = name
10             a.click()
11         }
12         x.send();
13     }
<a href="javascript:;" id="download" onclick=‘downloadImg(url,name)‘>下载</a>

  

原文地址:https://www.cnblogs.com/yihuite-zch/p/11445733.html

时间: 2024-10-13 20:20:35

前端的非同源图片下载的相关文章

iOS利用SDWebImage图片下载缓存

一.我们先来了解一下SDWebImage的使用: 1.导入框架,引入头文件: #import "UIImageView+WebCache.h" 也可以直接使用CocoaPods来引入和管理 (OC 如下) platform :ios, '7.0' pod 'SDWebImage', '~>3.8' (swift)并且要确保添加了use_frameworks,iOS版本为8.0+ platform :ios, '8.0' use_frameworks! 2.图片下载并缓存方法: /

网页前端开发,对于图片慢加载简介

http://www.cnblogs.com/qingseyuandi/p/loadingLater.html 网页前端的图片慢加载给网页显示的成本降低了不少,因此我在这边简单的介绍一下慢加载的一个技术原理,希望能起到抛砖引玉的作用,写的不好的地方希望指正,谢谢~~   技术背景 现在的网页系统,对于一些对图片资源比较多,并且一次性无法浏览完整个网页的情况下,图片慢加载可以提高客户端的体验,如IT大头:淘宝,网易,新浪等等...  技术原理   技术说穿了其实也就那么回事,懂了就简单了,呵呵~

多线程(四)之cell图片下载(SDWebImage的认识总结)

1.SDWebImage 首先这是个很有名的第三方框架,功能主要是:图片下载,图片缓存,下载进度监听和gif处理等.. 本次的目的是了解一下底层实现和框架的使用. 1.仿写SDWebImage 1.1自定义下载图片的NSOperation 实现起来很简单:思路如下: 1.我要下载图片在模拟器或者真机显示,肯定第一步就是在sb中拉一个imageview控件. 2.肯定要在控制器中设置一个全局属性的queue队列,一般是要懒加载一下,目的也就是实例化队列queue. 3.然后就是采用多线程中的NSO

picasso-强大的Android图片下载缓存库

编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识.前端.后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过! picasso是Square公司开源的一个Android图形缓存库,地址http://square.github.io/picasso/,可以实现图片下载和缓存功能.仅仅只需要一行代码就能完全实现图片的异步加载: Picasso.with(context).load("http://i.imgur.com/

SDWebImage异步的图片下载+缓存

SDWebImage托管在github上.https://github.com/rs/SDWebImage 这个类库提供一个UIImageView类别以支持加载来自网络的远程图片.具有缓存管理.异步下载.同一个URL下载次数控制和优化等特征.使用示范的代码: UITableView使用UIImageView+WebCache类(基本应用,UIImageView的一个category) 前提#import导入UIImageView+WebCache.h文件,然后在tableview的cellFor

猫猫学iOS(五十五)多线程网络之图片下载框架之SDWebImage

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 效果: 代码: - (NSArray *)apps { if (!_apps) { NSArray *dictArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"apps.plist" ofType:nil

js实现svg图形转存为图片下载[转]

我们知道canvas画布可以很方便的js原生支持转为图片格式并下载,但是svg矢量图形则并没有这方面原生的支持.研究过HighChart的svg图形的图片下载机制,其实现原理大体是浏览器端收集SVG代码信息,并发送到到服务器端,由后端程序转换成图片格式后,以流的形式反射给浏览器端下载. 最近在项目中有需求将一个非HighChart的SVG地图转存为图片并下载的功能.本希望模拟HighChart的原理实现,可是研究发现,该地图的SVG代码信息多达两万字节,然而HighChart后端制图程序却有着字

前端如何保存页面图片,并在相册中查看?

第一次接触混合开发,然后碰到了很多H5+api,调用手机相册,扫码,保存图片等.做技术的注定了要终生学习,但学无止境,我们不可能把所有的知识技能都学完了,学精通了再去工作,我们需要在工作中去提升自己,在工作红去总结去成长. 我项目是用mui加H5+去开发的,所以在调用H5+的api时要等plusready事件发生后才能正常使用. mui.plusReady(function(){ //在这里面写你所调用的api plus.downloader.createDownload(url, option

Linux Shell编程实战---shell实现图片下载神器

$ cat dowonload_image.sh  #!/bin/bash ######################################### #图片下载器                              # #script_name: dowonload_image.sh         # #author:weixiaoxin write by 2017-09-20   #      #########################################