解决 ajax 不能下载文件的问题】的更多相关文章

在web项目中需要下载文件,由于传递的参数比较多(通过参数在服务器端动态下载指定文件),所以希望使用post方式传递参数.通常,在web前端需要下载文件,都是通过指定<a>标签的href属性,访问服务器端url即可下载并保存文件到本地.但是这种方式使用的是HTTP GET方法,参数只能通过URL参数方式传递,无法使用POST方式传递参数.于是,想到使用ajax方式下载文件. 实验:ajax方式下载文件时无法触发浏览器打开保存文件对话框,也就无法将下载的文件保存到硬盘上!原因:ajax方式请求的…
最近在做网站的时候遇到这样一个功能,在如图所示的页面中,需要用户点击链接的时候,能够以异步Ajax的方式判断服务器中是否存储有相应的Excel文件,如果没有的话就提示用户没有找到,如果有的话就下载到用户本地. ​ 当然,这是很简单的一个问题,按照一般方式编写Ajax就可以了.但是当服务器端把文件内容以二进制的形式返回到浏览器端,浏览器的Ajax却抛出了错误.大致是ParseError, Invalid XML PK一类的错误信息. ​ 造成这个问题的原因,并不是服务器端代码或者javascrip…
/** * 区分ie 和其他浏览器的下载文件乱码问题 * @param request * @param fileName * @return */ public String getFileName(HttpServletRequest req,String fileName){ String userAgent = req.getHeader("user-agent"); userAgent = userAgent ==null?"":userAgent.toL…
用过浏览器的开发人员都对大文件上传与下载比较困扰,之前遇到了一个php文件夹上传下载的问题,无奈之下自己开发了一套文件上传控件,在这里分享一下.希望能对你有所帮助.此控件PC全平台支持包括mac,linux系统的文件上传,文章末尾将附上控件下载与教程链接 功能介绍: 树形目录导航.您可以通过树型目录导航和路径导航栏快速跳转到指定目录.在跳转后树型目录将会自动选中当前的目录. 路径导航,点击根目录按钮便可返根目录 文件和目录重命名 点击删除按钮 点击确定后,页面中的文件消失       批量上传文…
最近项目需要做一个下载文件的进度条,看网上上传文件进度条下载,特分享出来方便大家查阅 <!DOCTYPE html> <html> <head>     <meta charset="UTF-8">     <title>下载进度条</title> </head> <style type="text/css">     .containerBar{         wid…
[问题描写叙述] 单击IE底部下载工具栏没反应,点击"另存为"也没反应 [解决方法] 打开IE11,依次打开菜单:Internet 选项 -> 高级 -> 重置,重置完成后,重新启动电脑就可以.…
之前用的是a标签的方式,同源是没有问题的,但一跨域就不行了,试了其它方法,不是报跨域错误,就是在当前页面打开文件,体验相当不好. data = data.replace(/\\/g, '/'); var aLink = document.createElement('a'); aLink.download = data.split(]; aLink.href = data; aLink.click(); 最终解决方案: /** * 获取页面文件名 * @param url 文件url */ fu…
前端采用伪表单: 然后调用 后台代码为 效果图:…
参考:https://blog.csdn.net/wf632856695/article/details/52040034…
可能大家都觉得没有必要用ajax来下载东西,用window.open(url)就可以搞定 但是这有一个问题,就是这就限定了只能用GET方式来请求了: 可能你又会说GET很符合REST的要求呀. 但是如果你用jwt来做身份验证呢? 这意味着你需要在Window.open时带上自定义的Request Header,这就无解了 所以今天来介绍一下怎么用ajax来下载文件 let xhr = new XMLHttpRequest() xhr.open('GET', 'http://www.xxx.com…
前段时间在解决ajax上传文件时折腾了好一阵.直接用$.post上传文本信息肯定是没有问题的.但是$.post直接上传图片是不可行的. 后来看到网上的一些解决方案,有现成的ajax上传文件的封装的方法也有利用flash的.flash确实是个好方法 但是不是每个人都会flash的而且下载下来现成的方法要做修改也不是件易事,且文件相对较大.最后只好模拟iframe来实现.发现相当的简单. html: <iframe name="ajaxUpload" style="disp…
解决PHP Header下载文件在IE文件名中文乱码有两种常见的,一种是是把页面编码改成utf8,另一种是对中文url进入urlencode编码,根据UA检测,区别下载,就可以解决了 $filename = "中文.txt"; $ua = $_SERVER["HTTP_USER_AGENT"]; $encoded_filename = urlencode($filename); $encoded_filename = str_replace("+"…
对于js页面来说,未使用服务端控件,点击下载按钮时不会触发服务端事件,且不会提交数据到服务端页面后台进行数据处理,所以要下载文件比较困难.且使用jQ的post来请求一般处理程序也不能实现文件的下载,根本不会弹出提示用户保存文件的对话框.但会将文件数据获取到. 要解决一般处理程序下载文件的办法,其实很简单,只要明白b/s基本基本原理即可.采用方法为创建一个iframe,并隐藏,设置其src=demo.handler.ashx 即可,在服务端将要下载的文件输出即可.注意设置content-type和…
一 对于某些环境导出是直接用wiondow.href=url直接导出下载,有些业务需求,如员工档案等字段比较多的时候,全选导出就会引发异常,由于Nginx转发长度限制的问题, 如果运维不愿意改变环境,只能硬着头皮修改程序了,即由原来的get方式改为POST,ajax方式是不能下载文件的,因为会把文件流直接返回到回调函数中,所以这里采取隐藏form表单下载 后台接口修改为POST接受方式: @SuppressWarnings("rawtypes") @RequestMapping(val…
原因: Ajax下载文件的这种方式本来就是禁止的.出于安全因素的考虑,javascript是不能够保存文件到本地的, 所以ajax考虑到了这点,只是接受json,text,html,xml格式的返回值,二进制的返回格式就会抛出这个异常. 因为response原因,一般请求浏览器是会处理服务器输出的response,例如生成png.文件下载等, 然而ajax请求只是个“字符型”的请求,即请求的内容是以文本类型存放的. 文件的下载是以二进制形式进行的,虽然可以读取到返回的response,但只是读取…
项目中碰到的问题,记录如下. 需求很简单,点击一个文件链接下载该文件,同时向后台发送请求.需求很常见,用户点击下载后通常要进行下载量的统计,统计的话可以利用 script标签 或者 img标签(图片ping) 的跨域能力,将它们的 src 属性指向统计地址,但是这次用了 ajax 进行统计,遂出现了这个问题. demo 代码如下: <a id="a" href="http://c758482.r82.cf2.rackcdn.com/Sublime Text 2.0.2…
<!-- 避免IE执行AJAX时,返回JSON出现下载文件 --> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes"> <l…
//请求一个excel类 Microsoft.Office.Interop.Excel.ApplicationClass excel = null; //创建 Workbook对象 Microsoft.Office.Interop.Excel._Workbook workbook = null; Microsoft.Office.Interop.Excel.Workbooks workbooks = null; //创建工作薄 Microsoft.Office.Interop.Excel._Wo…
ubuntu Linux 测试PHP却提示下载文件的解决办法   一般这种情况都是在刚刚开始配置环境时出现的, 输入 sudo a2enmod php5  看提示如果出现“$ This module does not exist!”, 那么你就应该彻底删除libapache2-mod-php5并且重新安装,彻底删除可以用--purge参数,如下所示: sudo apt-get remove --purge libapache2-mod-php5sudo apt-get install libap…
利用php CI force_download($filename, $data) 下载.csv 文件解决文件名乱码,文件内容乱码 2014-07-31 12:53 1047人阅读 评论(0) 收藏 举报  分类: mysql(8)  php 算法(20)  php(38)  版权声明:本文为博主原创文章,未经博主允许不得转载. 利用php CI force_download($filename, $data) 下载.csv 文件解决文件名乱码,文件内容乱码.做了很久终于知道了很好的解决方案.…
使用HttpURLConnection下载文件时经常会出现 java.io.FileNotFoundException文件找不到异常,下面介绍下解决办法 首先设置tomcat对get数据的编码:conf/server.xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" <span s…
<?xml version="1.0" encoding="UTF-8"?> <!-- SpringMVC配置文件 --> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3…
说明:Ajax是无法实现文件传输的,本文只是模拟了Ajax不刷新页面就可以请求并返回数据的效果.实质上还是通过提交form表单来返回文件流的输出. 分步实现逻辑: ajax请求服务器,访问数据库,根据查询到的数据生成一个数据文件,返回前台一个json对象(可放置生成成功标记,文件路径等信息). ajax success回调函数部分,根据返回的json对象,调用手写的js下载文件的方法,实现页面无刷新下载文件. 贴上部分代码供参考: js代码: 1. js写一个动态创建并提交form表单的方法,依…
先说一下环境 EasyUI+SpringMVC+MyBatis 因为按正常手段,无法使用Ajax来提交一个包含文件的表单,故想到利用EasyUI的Form来提交,EasyUI的form封装了一套伪Ajax提交的方法,所以能够起到以ajax提交文件表单的作用! 但是当文件提交成功后,后台往前台返回了一个Json用来提示上传成功! 但是在其他浏览器下都正常,但是唯独在IE中会提示用户下载这个Json文件! 仔细的查看了下EasyUI的API看到API里有这样的一段话: 也就是说,返回的数据要无需设置…
1.flush - 刷新输出缓冲 2.ob_clean - 清空(擦掉)输出缓冲区 此函数用来丢弃输出缓冲区中的内容. 此函数不会销毁输出缓冲区,而像 ob_end_clean() 函数会销毁输出缓冲区. 注:上面2个函数可以解决PHP下载文件内容乱码 代码如下 // 文件名不要用中文 //fname为要下载的文件名 //$fpath为下载文件所在文件夹,默认是downlod function download($fname,$fpath="download/"){ //避免中文文件名…
传统上,客户端将依靠浏览器来处理从服务器下载文件.然而,这种方法需要打开一个新的浏览器窗口,iframe或任何其他类型的不友好和黑客行为.为下载请求添加额外的头信息也很困难.更好的解决方案是使用HTML5 File API以及XMLHttpRequest或请求库. File API允许您在浏览器中创建,加载和操作文件.我们可以使用a Blob 创建一个内存文件: const blob = new Blob(['lorem ipsum'],{type:'text / plain'}); 通过一些额…
由于想要实现下载的文件可以进行选择,而不是通过<a>标签写死下载文件的参数,所以一直想要使用JFinal结合ajax实现文件下载(这样的话ajax可以传递不同的参数),但是ajax实现的文件下载并不能触发浏览器的下载文件弹出框,这里通过模拟表单提交实现同样的效果. 1.html代码: <a class="mini-button" iconCls="icon-edit" onclick="output()">导出</a…
引子 在HTML5没来之前,浏览器想要下载文件,可能有这么几种方式: 借助a标签,<a href="学习资料.xlsx"></a> window.location = '学习资料.xlsx' 借助浏览器插件,如flash等(没考证过) 除了第三外,前两种方法有个缺点,就是无法知道下载是否完成,因为浏览器没有给出相关的事件.但是,自从有了Blob,fetch, xhr2这些好用的API之后,ajax下载文件(小文件)就变得可行了,核心原因就在于Blob和Array…
第一:urlopen出现403 #!/usr/bin/env python # -*- coding: utf- -*- import urllib url = "http://www.google.com/translate_a/t?client=t&sl=zh-CN&tl=en&q=%E7%94%B7%E5%AD%A9" #浏览器头 headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.…