Java实现文件点击没反应的方法
程序员文章站
2024-02-22 19:36:04
jsp页面链接,点击访问action用io流去下载服务器上的文件,问题是任凭怎么点击都没反应,日志也不报错。
前台ajax代码
ext.ajax.request...
jsp页面链接,点击访问action用io流去下载服务器上的文件,问题是任凭怎么点击都没反应,日志也不报错。
前台ajax代码
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代码
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的方式
window.open('/yjy/training/trainingtimeaction.do?method=downloadattchbyid&timeid=' + timeids);
注:采用这种方式页面会弹出一个空白窗口,下载之后窗口自动关闭,如果不想显示这个窗口,使用form提交的方式
总结
以上所述是小编给大家介绍的java实现文件点击没反应的方法,希望对大家有所帮助
下一篇: Java实现打飞机小游戏(附完整源码)