栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

首先请看效果图:

 

核心代码:

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; 
 
 
public class FileUpload extends HttpServlet { 
 private static final long serialVersionUID = 1L; 
 private static final String fileDir = "F:/"; 
  
 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 fileNames = new ArrayList(); 
  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"%> 
 
 
 
 
Insert title here 
 
 
  
 
 

download.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" 
 pageEncoding="UTF-8"%> 
 
 
<%@page import="java.util.List"%> 
 
 
Insert title here 
 
 
 
 
--------------直接下载------------
<% List fileNames = (List )request.getAttribute("fileNames"); for(String fileName : fileNames) { %> <% } %>
--------------直接打开--------- <% for(String fileName : fileNames) { %> <% } %>

本文已被整理到了《Java上传操作技巧汇总》,欢迎大家学习阅读。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/148952.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号