手机
当前位置:查字典教程网 >编程开发 >Java >java组件commons-fileupload实现文件上传、下载、在线打开
java组件commons-fileupload实现文件上传、下载、在线打开
摘要:最近做了一个文件上传、下载、与在线打开文件的功能,刚开始对文件上传的界面中含有其它表单(例如输入框、密码等)在上传的过程中遇到了许多问题,下...

最近做了一个文件上传、下载、与在线打开文件的功能,刚开始对文件上传的界面中含有其它表单(例如输入框、密码等)在上传的过程中遇到了许多问题,下面我写了一个同时实现文件上传、下载、在线打开文件的测试程序。

首先请看效果图:

java组件commons-fileupload实现文件上传、下载、在线打开1

核心代码:

package com.jefry; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; /** * Servlet implementation class FileUpload */ public class FileUpload extends HttpServlet { private static final long serialVersionUID = 1L; private static final String fileDir = "F:/"; /** * Default constructor. */ public FileUpload() { } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String aFileName = request.getParameter("fileName"); String online = request.getParameter("online"); FileInputStream in = null; ServletOutputStream out = null; boolean isOnLine = online != null ? true : false ; try { if(isOnLine){ URL u = new URL("file:///"+fileDir + aFileName); response.setContentType(u.openConnection().getContentType()); response.setHeader("Content-Disposition", "inline; filename="+aFileName); } else{ response.setContentType("application/x-msdownload"); response.setHeader("Content-Disposition", "attachment; filename=" + aFileName); } in = new FileInputStream(fileDir + aFileName); out = response.getOutputStream(); out.flush(); int aRead = 0; while ((aRead = in.read()) != -1 & in != null) { out.write(aRead); } out.flush(); } catch (Throwable e) { e.printStackTrace(); } finally { try { in.close(); out.close(); } catch (Throwable e) { e.printStackTrace(); } } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { DiskFileItemFactory fileFactory = new DiskFileItemFactory(); ServletFileUpload fu = new ServletFileUpload(fileFactory); List fileItems = fu.parseRequest(request); Iterator iter = fileItems.iterator(); String uploader = null; String date = null; List<String> fileNames = new ArrayList<String>(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (!item.isFormField()) { // 文件 String oldFileName = item.getName(); String newFileName = null; int delimiter = oldFileName.lastIndexOf("/"); if (delimiter == -1) newFileName = oldFileName.substring(delimiter + 1); else newFileName = oldFileName; fileNames.add(newFileName); item.write(new File(fileDir + newFileName)); } else { // 表单 String fieldName = item.getFieldName(); if ("uploader".equals(fieldName)) { uploader = item.getString(); } else if ("date".equals(fieldName)) { date = item.getString(); } } } request.setAttribute("fileNames",fileNames); request.getRequestDispatcher("download.jsp").forward(request, response); } catch (Exception e) { } } }

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="FileUpload" method="post" enctype="multipart/form-data"> <br> 文件一:<input type="file" name="file1" /> <br> 文件二:<input type="file" name="file2" /> <br> 上传者:<input type="text" name="uploader"/> <br> 日期:<input type="text" name="date"/> <br> <input type="submit" value="提交"/> </form> </body> </html>

download.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@page import="java.util.List"%><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <br> --------------直接下载------------ <br> <% List<String> fileNames = (List<String> )request.getAttribute("fileNames"); for(String fileName : fileNames) { %> <form action="FileUpload" method="get"> <input type="hidden" name="fileName" value="<%=fileName %>" /> <input type="submit" value="下载:<%=fileName %>" /> </form> <% } %> <br> --------------直接打开--------- <% for(String fileName : fileNames) { %> <form action="FileUpload" method="get"> <input type="hidden" name="fileName" value="<%=fileName %>" /> <input type="hidden" name="online" value="yes" /> <input type="submit" value="打开:<%=fileName %>" /> </form> <% } %> </br> </body> </html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持查字典教程网。

【java组件commons-fileupload实现文件上传、下载、在线打开】相关文章:

Java 文件解压缩实现代码

java读取csv文件内容示例代码

java实现大文件分割与合并的实例代码

java中servlet实现登录验证的方法

使用java实现http多线程断点下载文件(一)

快速解决commons-fileupload组件无法处理自定义head信息的bug

关于Struts2文件上传与自定义拦截器

java实现哈弗曼编码与反编码实例分享(哈弗曼算法)

java操作mongodb实现CURD功能实例

java读取word-excel-ppt文件代码

精品推荐
分类导航