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