javaweb文件的下载和上传功能的实现(2)
2015-09-18 00:00
531 查看
摘要: 下载功能的实现。
前台代码我们可以用一个<a>标签:
然后我们进入servlet,准备下载文件:
下面是一个自己做得时候,一个部分下载的代码!!
前台代码我们可以用一个<a>标签:
[code=plain]<a href="${pageContext.request.contextPath}/servlet/NewsServlet?action=filedownload&newsId=${news.newsId }"> </a>
然后我们进入servlet,准备下载文件:
[code=plain] String filePath=PropertiesUtil.getValue("filePath")+"\\"+imageName; //获得文件的地址 File file=new File(filePath); //为你给的地址,创建一个file文件实例 if(!file.exists()){ //如果没有这个文件存在,提示错误。 request.setAttribute("message", "您要下载的资源已被删除!!"); request.getRequestDispatcher("/index.jsp").forward(request, response); return; } String realname = imageName.substring(14, imageName.length()); //为后面你想修改下载时候文件的名字起名字。 //response.setHeader("content-disposition","attachment;imageName=" + URLEncoder.encode(realname, "UTF-8")); //待定 FileInputStream in=new FileInputStream(filePath); //创建一个输入流 ByteArrayOutputStream out = null; //创建一个可以捕捉二进制的输出流 byte[] data = null; //后面用来存放二进制文件的数据 try{ out = new ByteArrayOutputStream(); byte[] buffer=new byte[1024]; int len=0; while((len=in.read(buffer))>0){ //输出缓冲区的内容到浏览器,实现文件下载 out.write(buffer, 0, len); } in.close(); data = out.toByteArray();//把out中的内容输入到data中 out.close(); }catch(Exception e){ e.printStackTrace(); } realname = new String(realname.getBytes("UTF-8"), "ISO-8859-1"); response.setContentType("application/octet-stream"); //必须要 response.setHeader("content-disposition", "attachment; filename="+realname); //修改下载时候下载文件的名字i OutputStream out1=response.getOutputStream(); out1.write(data); //下载实现 out1.flush(); out1.close(); }catch(Exception e){ e.printStackTrace(); }finally{ try { con.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
下面是一个自己做得时候,一个部分下载的代码!!
[code=plain] String newsId=request.getParameter("newsId"); Connection con=null; String imageName=null; con=dbUtil.getConn(); News news; try { news = newsDao.getNewsById2(con, newsId); imageName=news.getImageName(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } String filePath=PropertiesUtil.getValue("filePath")+"\\"+imageName; File file=new File(filePath); if(!file.exists()){ request.setAttribute("message", "您要下载的资源已被删除!!"); request.getRequestDispatcher("/index.jsp").forward(request, response); } String realname = imageName.substring(14, imageName.length()); //response.setHeader("content-disposition","attachment;imageName=" + URLEncoder.encode(realname, "UTF-8")); FileInputStream in=new FileInputStream(filePath); ByteArrayOutputStream out = null; byte[] data = null; out = new ByteArrayOutputStream(); byte[] buffer=new byte[1024]; int len=0; while((len=in.read(buffer))>0){ //输出缓冲区的内容到浏览器,实现文件下载 out.write(buffer, 0, len); } in.close(); data = out.toByteArray(); out.close(); realname = new String(realname.getBytes("UTF-8"), "ISO-8859-1"); response.setContentType("application/octet-stream"); response.setHeader("content-disposition", "attachment; filename="+realname); OutputStream out1=response.getOutputStream(); out1.write(data); out1.flush(); out1.close(); try { con.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }
相关文章推荐
- java-“==”、equals和hashcode有什么区别
- Java Swing组件JScrollPane
- Spring + Aop+注解 集成使用 Log4j,实现异常日志记录
- MyEclipse jsp 无端报错
- eclipse修改AndroidManifest.xml 文件中package
- spring mvc 文件上传+本地预览+一次提交
- useBean javaBean 的应用案例
- java---杂七杂八的备忘录
- JAVA基础之内部类
- Spring 事务
- Java多线程--安全问题
- java正则表达式
- lombok简介及使用方法
- Think in Java 实例变量的初始化
- Think in Java IO流的 字节流部分
- Think in Java 笔记_Chapter12_1_Exception基础_继承和RuntimeException处理1
- Think in Java 笔记_Chapter12_1_Exception基础_异常处理2
- Think in Java 笔记_Chapter12_1_Exception基础_异常处理3_自定义异常以及抛出多个异常的处理
- Think in Java 笔记_Chapter20_1_Annocation基础语法
- Think in Java 笔记_Chapter20_2_Annocation和Junit