文件下载用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();
}
}
}
}