jsp页面链接,点击访问action用io流去下载服务器上的文件,问题是任凭怎么点击都没反应,日志也不报错。
前台ajax代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
ext.ajax.request({
url : '/yjy/training/trainingtimeaction.do?method=downloadattchbyid' ,
params : {
timeid : timeids
},
success : function(response,options){
var result = ext.util.json.decode(response.responsetext);
ext.msg.alert( "下载成功" );
},
failure :function(response,options){
var result = ext.util.json.decode(response.responsetext);
ext.msg.alert( "下载失败" +result.message);
}
});
|
后台action代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
string timeid = request.getparameter( "timeid" );
string sql = "select doc_name from cper.ehrtrain_item_document where item_id = ?" ;
dbhelper dbhelper = new dbhelper();
object[] params = new object[]{timeid};
string filename = (string)dbhelper.runsqlscalar(sql, params);
string filepath = serverpathutil.getpathroot()+ "web-inf/cache/train_item_file/train_item_file_" +timeid+ "/" +filename;
file file = new file(filepath);
if (!file.exists()){
logger.debug( "文件不存在" );
throw new ioexception( "the file not exists" );
}
response.setcontentlength(( int ) file.length());
outputstream o = response.getoutputstream();
byte b[] = new byte [ 5000 ];
//response.setcontenttype("application/x-msdownload");
response.setcontenttype( "application/vnd.ms-excel" );
response.setcontentlength(( int )file.length());
response.setheader( "content-disposition" , "attachment; filename=" +filename);
fileinputstream in = new fileinputstream(file);
int n;
while ((n = in.read(b)) != - 1 ) {
o.write(b, 0 , n);
}
in.close();
} catch (exception e){
e.printstacktrace();
}
|
解决方法:文件的下载,在前台请求的时候,只能是form表单请求,或者用window.open的方式,最后我采用了window.open的方式
1
|
window.open( '/yjy/training/trainingtimeaction.do?method=downloadattchbyid&timeid=' + timeids);
|
注:采用这种方式页面会弹出一个空白窗口,下载之后窗口自动关闭,如果不想显示这个窗口,使用form提交的方式
总结
以上所述是小编给大家介绍的java实现文件点击没反应的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:https://www.cnblogs.com/thouthout/archive/2018/07/25/9366048.html