文件下载用ajax请求后没响应
// $.ajax({
// url:,
// type:'POST',
// dataType:'json',//json 返回值类型
// data:{
// fileId:fileId
// },
// success:function(data){
// console.log("downFile-------");
// MaskUtil.unmask();
// },
// error:function () {
// MaskUtil.unmask();
// alert("下载异常!", "", null, {type: 'warning'});
// }
// });
改用 window.location.href=url 即可
window.location.href=basePath+"restful/downloadFile.do?fileId="+fileId;
点下载退出登录,记得带header 属性
var eleForm = $("<form method='get'></form>");
eleForm.attr("action",basePath + "restful/downloadFile.do");
eleForm.append($("<input />").attr("type", "hidden").attr("name", "fileId").attr("value", fileId));
eleForm.append($("<input />").attr("type", "hidden").attr("name", "AiSeeCloudToken").attr("value", sessionStorage["AiSeeCloudToken"]));
$(document.body).append(eleForm);
eleForm.submit();
后端:
@RequestMapping(value = "/downloadFile")
public void downloadFile(String fileId,HttpServletRequest request,HttpServletResponse response) throws IOException {
// String fileId = request.getParameter("fileId") == null ? "" : request.getParameter("fileId");
logger.info("downloadFile id :" + fileId);
Map<String,Object> params = Maps.newConcurrentMap();
params.put("id", GlobalVariable.MONGO_KEY_PREFIX + fileId);
JSONObject json = fileUpDownload.fileDownloadFromMongo(propertiesUtil.getUploadUrl(), propertiesUtil.getCollectionName(), params);
JSONObject reJson = new JSONObject();
reJson.put("success", false);
if(json.getBooleanValue("success")) {
String fileName = json.getString("filename");
response.setCharacterEncoding("UTF-8");
response.setContentType("application/octet-stream");
//3.设置content-disposition响应头控制浏览器以下载的形式打开文件
response.addHeader("Content-Disposition","attachment;filename=" + new String(fileName.getBytes("UTF-8"),"ISO8859-1"));
OutputStream os = null;
BufferedInputStream bis = null;
try {
os = response.getOutputStream();
os.write(json.getBytes("bytes"));
os.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(bis != null)
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
if (os != null)
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
在这里,它可能包含了Ajax请求的发起代码,通过JavaScript(可能使用jQuery或Fetch API)向FileAction发送请求,请求参数包括要下载的文件扩展名。 6. **新建 文本文档.txt**:这可能是示例中的一个测试文件,用于...
其中,获取Ajax请求记录是开发者调试过程中非常关键的一环,因为它可以帮助开发者检查数据的发送和接收情况,排查网络问题,以及理解应用程序的工作流程。 Chrome扩展插件就是一种增强浏览器功能的方式,它们可以...
在上述代码中,我们定义了AJAX请求的各个关键属性:url指定服务器接口,type定义请求方法,data是待发送的数据,dataType指明期望的响应格式。success和error回调分别处理成功和失败的情况。 然而,为了更简洁,...
1.情况描述:ajax发送成功,后台也成功响应请求,并返回了json数据,通过chrome监听请求也可以看到响应的json数据,但是就是不进success方法,反而跑到error方法中了 前端: $.ajax({ type : get, data : {'dbId'...
然后,关于导出XML文件,文档中并没有详细描述实现方式,但可以推测,导出功能很可能是通过服务器端生成相应的XML文件,并通过Ajax请求将文件作为响应返回给客户端,然后利用JavaScript触发浏览器的下载功能。...
1. **AJAX基础**:创建AJAX请求通常使用JavaScript的`XMLHttpRequest`对象或者现代浏览器提供的`fetch` API。`XMLHttpRequest`的`open()`方法设置请求类型(GET或POST)、URL和是否异步,`send()`方法发送请求。`...
在现代Web开发中,"上传文件AJAX"是一项至关重要的技术,它允许用户在不刷新整个页面的情况下,通过异步方式上传文件。这种方式极大地提升了用户体验,因为它使得网页交互更加流畅和快速。AJAX(Asynchronous ...
开发者需要根据这些文档编写符合规范的AJAX请求。 在"图书管理案例.html"中,可以看到实际的HTML结构和JavaScript代码,包括事件监听、AJAX调用、数据处理等部分。通过阅读和分析这个文件,可以更深入地理解如何在...
通过发送Ajax请求到服务器,客户端可以获取关于文件的信息或者触发实际的文件生成过程,所有这一切都在后台完成,用户界面保持不变。 然后,PHP是一种后端服务器脚本语言,通常用于处理Web请求,生成动态内容。在...
3. **编写Ajax调用**:使用jQuery或其他JavaScript库,我们可以编写Ajax请求来调用服务器上的方法。这样可以实现异步导出,避免页面刷新,提高用户体验。Ajax调用通常包含URL、类型(GET或POST)、数据和回调函数。 ...
Servlet接收到下载请求后,会准备文件的下载流,并设置合适的HTTP响应头,比如Content-Disposition来指定文件名,以及Content-Type来指明文件类型。然后,Servlet将文件内容写入响应流,前端接收到这个响应后,...
- 使用jQuery的`$.ajax()`或`$.formData()`方法,可以发送异步请求,实现在后台处理文件上传而无需页面刷新。 - 创建一个`FormData`对象,将选中的文件添加到其中,然后通过`xhr.send(formData)`发送到服务器。 -...
Ajax Interceptor 是一款专为谷歌浏览器(Chrome)设计的插件,它允许开发者在Ajax请求发送后和响应返回前进行干预,从而实现对AJAX请求数据的修改。这款插件对于前端开发、调试以及测试来说是一个强大的工具,特别...
2. **JavaScript**:负责触发Ajax请求,处理响应数据,以及更新DOM(文档对象模型)以显示新数据。JavaScript可以创建异步调用,使页面在请求处理期间保持活动状态。 3. **数据格式**:虽然最初是XML,但现在更常见...
【Ajax跨域请求WebService.asmx】是一个常见的Web开发技术应用场景,主要涉及到JavaScript的Ajax技术、C#编程语言以及ASP.NET的WebService组件。Ajax(Asynchronous JavaScript and XML)是一种在不刷新整个页面的...
5. **响应处理**:服务器返回数据,Ajax请求对象的onreadystatechange事件被触发,当readyState属性变为4(表示请求已完成)且status属性为200(表示成功)时,表示数据已准备好。 6. **更新DOM**:JavaScript接收到...
在jQuery中,使用$.ajax()方法发起AJAX请求时,可以设置`crossDomain`参数为`true`来开启跨域请求。例如: ```javascript $.ajax({ url: 'http://example.com/api/data', // 跨域的URL type: 'GET', crossDomain...
2. **AJAX调用**:使用ajaxfileupload库,我们需要配置一个AJAX请求,指定URL(服务器端处理文件的接口)、参数(如文件数据、额外信息等)以及回调函数,处理成功或失败的响应。 3. **FormData对象**:在现代...
通过上述分析,我们可以看到使用 Python 的 `urllib.request` 库可以轻松实现类似于 Ajax 的 GET 请求。虽然这段代码并不是纯前端 Ajax 实现,但它为我们提供了一种理解 Ajax 工作原理的方法。对于前端开发人员来说...