欢迎来到天天文库
浏览记录
ID:10905864
大小:42.50 KB
页数:7页
时间:2018-07-08
《用jsp来实现文件下载功能的几种方式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、用Jsp来实现文件下载功能的几种方式1.最直接最简单的,方式是把文件地址直接放到html页面的一个链接中。这样做的缺点是把文件在服务器上的路径暴露了,并且还无法对文件下载进行其它的控制(如权限)。这个就不写示例了。2.在服务器端把文件转换成输出流,写入到response,以response把文件带到浏览器,由浏览器来提示用户是否愿意保存文件到本地。(示例如下)<%response.setContentType(fileminitype);response.setHeader("Location",filename);response.se
2、tHeader("Cache-Control","max-age="+cacheTime);//filename应该是编码后的(utf-8)response.setHeader("Content-Disposition","attachment;filename="+filename);response.setContentLength(filelength);OutputStreamoutputStream=response.getOutputStream();InputStreaminputStream=newFileInputStr
3、eam(filepath);byte[]buffer=newbyte[1024];inti=-1;while((i=inputStream.read(buffer))!=-1){outputStream.write(buffer,0,i);}outputStream.flush();outputStream.close();inputStream.close();outputStream=null;%>3.既然是JSP的话,还有一种方式就是用Applet来实现文件的下载。不过客户首先得信任你的这个Applet小程序,由这个程序来接受由se
4、rvlet发送来的数据流,并写入到本地。servlet端示例publicvoidservice(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException{res.setContentType("text/plain");OutputStreamoutputStream=null;try{outputStream=res.getOutputStream();//把文件路径为srcFile的文件写入outputStream中popFile(s
5、rcFile,outputStream));}catch(IOExceptione){e.printStackTrace();}}JApplet端示例URLConnectioncon;try{//url是被调用的SERVLET的网址如*.docon=url.openConnection();con.setUseCaches(false);con.setDoInput(true);con.setDoOutput(true);con.setRequestProperty("Content-Type","application/octet-st
6、ream");InputStreamin=con.getInputStream();ProgressMonitorInputStreampmInputStream=newProgressMonitorInputStream(pane,"正在从服务器下载文件内容",in);ProgressMonitorpMonitor=pmInputStream.getProgressMonitor();pMonitor.setMillisToDecideToPopup(3);pMonitor.setMillisToPopup(3);//localfile
7、path本地路径,localstr文件文件夹,filename本地文件名Stringlocalfilepath=localstr+filename;//方法saveFilsaveFilee是把输入流pmInputStream写到文件localfilepath中if(saveFilsaveFilee(localfilepath,pmInputStream)){ openLocalFile(localfilepath);}4.顺便把JApplet上传文件的代码也贴上来.JApplet端示例URLConnectioncon;try{con
8、=url.openConnection();//url是被调用的SERVLET的网址如*.do con.setUseCaches(false);con.setDoInput(true);co
此文档下载收益归作者所有