一:在写前端下载页面时,使用ajax方式调用action中的方法,然后就将下载内容返回js中了,所以没有下载,之后改为使用Windows.location进行下载,就没有问题了。

action中代码:

 if(decode = null ll decode. length = 0){
log.warn("****无下载内容**)
throw new Exception();
}
String filename =contractNo+".pdf";
/设置文件名的编码
if(request.getHeader("user-agent "). toLowerCase().contains("msie")){
filename URLEncoder. encode(filename,"utf-8");//将不安全的文件名改为UTF-8格式
}else{
filename new String(filename. getBytes("utf-8"),"iso-8859-1");/火狐浏览器
}
//告知浏览器要下载文件
response. setHeader("content-disposition","attachment; filename="+filename); response.setHeader("content-type,"application/pdf");
response setCharacterEncoding("utf-8)告知服务器使用什么编码
//创建一个文件输出流
out response getOutputStream():
out.write(decode);
}catch(Exception e){
log.warn("****下载合同结束异******");
throw e;
finally {
if (out != null){
try {
out.close();
catch(Exception e){
throw e;
}

  

js中代码:

/*下载*/
function cfContractsignDownload(){
if($('#cfContractsignList')find".selected").length!== 1){
showMsg('请选择一行记录','warning');
return;
}
var rowData=$('#cfContractsignList').DataTable().rows(". selected").data()[0];//已经获取数据
if(rowData. contractNo != undefined & rowData. contractNo !=="&& rowData. contractNo !== null){ var url= contextPath +"/cfContractsign/cfContractsignDownload",
var data={
contractNo:rowData.contractNo,
sourceType: rowData. sourceType,
consumerId: rowData. consumerId

//window.location=ur1;//请求不带参数
window.location=url+"?"+$.pram(data);//请求带参数
Else{
);
showMsgDuringTime(合同编号为空,不能下载!)

  

文件下载资料:https://blog.csdn.net/feng2147685/article/details/80515371

二:js中使用xhr.open("get",url,true)

action中:

BufferedInputStream output = null;
try {
BeanResult data = cf12000008.downloadContract(cf12000008In);
BaseResponse bresponse = data.getResponse();
CF12000008Out cf12000008Out =(CF12000008Out) bresponse;
String fileInfo = cf12000008Out.getFileInfo(); String fileUrl = cf12000008Out.getFileUrl();
response.setHeader("content-type", "application/pdf");
out = response.getOutputStream();
//判断下载内容
if(BusiUtil.isNotNull(fileInfo)){
decode = Base64Utils.decode(fileInfo);
//创建一个文件输出流
out.write(decode);
}else if(BusiUtil.isNotNull(fileUrl)){
URL url = new URL(fileUrl);
URLConnection conn = url.openConnection();
in = conn.getInputStream();
output = new BufferedInputStream(in);
byte[] buff = new byte[1024*10];
int len = 0;
while ((len=output.read(buff))>-1) {
out.write(buff,0,len);
}
}else{
response.setHeader("content-type", "text/plain");
out.write(0);
}

  

js中代码:

if($("#contractNo").val() !== "" && $("#contractNo").val() !== null && $("#contractNo").val() !== undefined){
var url = contextPath + "/cfContractSign/cfContractSignDownload";
var xhr = new XMLHttpRequest();
xhr.open("get", url +"?" +$.param(data), true);
xhr.responseType = "blob";
xhr.onload = function() {
if (this.status == 200) {
var blob = this.response;
if(blob.type == "text/xml"){
parent.showMsgDuringTime("下载失败,请检查合同编号");
return false
}else if(blob.type == "text/plain"){
parent.showMsgDuringTime("下载失败,后台返回为空");
return false
}
var fileName = $("#contractNo").val()+".pdf";
if(window.navigator.msSaveOrOpenBlob){
// IE浏览器下
navigator.msSaveBlob(blob, fileName);
} else {
var link = document.createElement("a");
link.href = window.URL.createObjectURL(blob);
link.download = fileName;
link.click();
window.URL.revokeObjectURL(link.href);
parent.showMsgDuringTime("下载成功");
contractAddCancel();
}
}else{
showMsg('请求错误', 'warning');
}
}
xhr.onloadend = function(res){ }
xhr.send();
}

  

在action中进行文件下载,下载时运行不报错,可是也不下载的更多相关文章

  1. 在eclipse动态网页项目中,编写web.xml时,servlet标签报错.

    cvc-complex-type.2.4.b: The content of element 'servlet' is not complete. One of '{"http:// jav ...

  2. homestead虚拟机,通过npm下载依赖包和解决运行gulp报错问题 yarn出错问题

    homestead虚拟机,通过npm下载依赖包和解决运行gulp报错问题 yarn出错问题 1. 在虚拟器运行 npm 下载依赖组件时报错: npm ERR! EPROTO: protocol err ...

  3. pytest——pycharm中右击运行(run)没有问题,在terminal中运行pytest报错:E ModuleNotFoundError: No module named

    参考了这个解决办法:https://blog.csdn.net/qq_36829091/article/details/82180866 我的是Windows,linux的和Windows的解决办法有 ...

  4. vs2010一运行就报错deven.exe assert failure 解决方法,卸载系统中.netFramework最新版本的(简体中文)

    vs2010一运行就报错deven.exe assert failure 解决方法,卸载系统中.netFramework最新版本的(简体中文)

  5. php中读取中文文件夹及文件报错

    php读取时出现中文乱码 一般php输出中出现中文乱码我们可用 header ('content:text/html;charset="utf-8"'); php中读取中文文件夹及 ...

  6. soamanager发布的Webservice服务,调用时出现http500报错

    最近再给薪酬那边发布ws服务时出现了报错,调用方反馈了errorCode:BEA-380002.在使用XMLspy工具去调用这个WSDL时候,则反馈http500的错误消息.如下图: 遇到这种问题我通 ...

  7. 关于使用stanfordcorenlp一直运行不报错的解决方法

    一.问题描述: 最近在使用stanfordcorenlp时,遇到了我在运行时代码不报错但同时也没有结果的问题,等了很久也没有出结果.其实是很简单的一个步骤,但却花了好几天的时间都没有成功!网上更多的是 ...

  8. python3写入文件时编码问题报错

    在字符串写入文件时,有时会因编码问题导致无法写入,可在open方法中指定encoding参数 chfile = open(filename, 'w', encoding='utf-8') 这样可解决大 ...

  9. javascript的倒计时功能中newData().getTime()在iOS下会报错问题解决

    javascript的倒计时功能中newData().getTime()在iOS下会报错问题解决 在做移动端时间转化为时间戳时,遇到了一个问题,安卓手机上访问时,能拿到时间戳,从而正确转换时间,而在i ...

随机推荐

  1. JS对象、构造器函数和原型对象之间的关系

    一.基本概念 1.对象:属性和方法的集合,即变量和函数的封装.每个对象都有一个__proto__属性,指向这个对象的构造函数的原型对象. 2.构造器函数:用于创建对象的函数,通过new关键字生成对象. ...

  2. WPF线程中获取控件的值和给控件赋值

    WPF中使用线程操作控件,按平常的操作方法操作的话会报异常:调用线程无法访问此对象,因为另一个线程拥有该对象.所以我们要使用Dispatcher类的BeginInvoke()与Invoke()方法.B ...

  3. SSIS Hekaton In-Memory OLTP 【翻译一篇外国文章】

    来自:http://www.itprotoday.com/microsoft-sql-server/important-new-features-sql-server-2014 Microsoft's ...

  4. sql server导出数据,远程连接失败,需要设置权限

    在sql  server management中右键当前连接——>方面 在 服务器配置中 将  RemoteAccessEnabled.RemoteDacEnabled设置为TRUE 安全性—— ...

  5. 2018软件工程W班第一次助教小结

    我是数计学院实验教学中心的一名老师,机缘巧合之下,这个学期跟着汪老师上<软件工程实践>这门课.之前有陆续听说过<构建之法>这本书,记得好像学院还有主办过研讨会.对于这门实践课, ...

  6. 网络-05-端口号-F5-负载均衡设-linux端口详解大全--TCP注册端口号大全备

    [root@test1:Standby] config # [root@test1:Standby] config # [root@test1:Standby] config # [root@test ...

  7. Oracle树查询及相关函数

    Oracle树查询的最重要的就是select...start with... connect by ...prior 语法了.依托于该语法,我们可以将一个表形结构的中以树的顺序列出来.在下面列述了Or ...

  8. ajax的网上解析

    /* 用XMLHTTPRequest来进行ajax异步数据交交互*/ 主要有几个步骤: //1.创建XMLHTTPRequest对象 //最复杂的一步 if (window.XMLHttpReques ...

  9. 2018-2019-2 《网络对抗技术》 Exp1 PC平台逆向破解 20165215

    2018-2019-2 <网络对抗技术> Exp1 PC平台逆向破解 20165215 目录 知识点描述 实验步骤 (一)直接修改程序机器指令,改变程序执行流程 (二)通过构造输入参数,造 ...

  10. IP通信基础学习第七周(下)

    H3C的配置指令包括:基本配置,查看指令,接口配置. 基本配置包括:查看可用指令:进入系统视图,全局配置模式:给设备命名:退回上一层模式:直接退回到用户模式. 查看指令包括:显示设备系统版本信息:显示 ...