欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java組件commons-fileupload實現(xiàn)文件上傳、下載、在線打開

 更新時間:2016年10月14日 15:39:59   作者:jefry_xdz  
這篇文章主要介紹了java組件commons-fileupload實現(xiàn)文件上傳、下載、在線打開,具有一定的參考價值,感興趣的小伙伴們可以參考一下

最近做了一個文件上傳、下載、與在線打開文件的功能,剛開始對文件上傳的界面中含有其它表單(例如輸入框、密碼等)在上傳的過程中遇到了許多問題,下面我寫了一個同時實現(xiàn)文件上傳、下載、在線打開文件的測試程序。

首先請看效果圖:

 

核心代碼:

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上傳操作技巧匯總》,歡迎大家學(xué)習(xí)閱讀。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Cloud實戰(zhàn)技巧之使用隨機端口

    Spring Cloud實戰(zhàn)技巧之使用隨機端口

    這篇文章主要給大家介紹了關(guān)于Spring Cloud實戰(zhàn)技巧之使用隨機端口的相關(guān)資料,文中介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06
  • java 數(shù)據(jù)結(jié)構(gòu)之棧與隊列

    java 數(shù)據(jù)結(jié)構(gòu)之棧與隊列

    這篇文章主要介紹了java 數(shù)據(jù)結(jié)構(gòu)之棧與隊列的相關(guān)資料,這里對java中的棧和隊列都做出實現(xiàn)實例來幫助大家理解學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),需要的朋友可以參考下
    2017-07-07
  • springboot 基于Tomcat容器的自啟動流程分析

    springboot 基于Tomcat容器的自啟動流程分析

    這篇文章主要介紹了springboot 基于Tomcat容器的自啟動流程分析,Spring通過注解導(dǎo)入Bean大體可分為四種方式,我們主要來說Import的兩種實現(xiàn)方法,需要的朋友可以參考下
    2020-02-02
  • java對同一個文件進行讀寫操作方法

    java對同一個文件進行讀寫操作方法

    在本篇文章里我們給大家詳細講述了java對同一個文件進行讀寫操作的方法和知識點,需要的朋友們可以參考學(xué)習(xí)下。
    2018-10-10
  • MyBatis批量插入的三種方式比較總結(jié)

    MyBatis批量插入的三種方式比較總結(jié)

    由于項目需要生成多條數(shù)據(jù),并保存到數(shù)據(jù)庫當(dāng)中,所以就用到了MyBatis批量插入,下面這篇文章主要給大家介紹了關(guān)于MyBatis批量插入的三種方式的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • 利用數(shù)組實現(xiàn)棧(Java實現(xiàn))

    利用數(shù)組實現(xiàn)棧(Java實現(xiàn))

    這篇文章主要為大家詳細介紹了利用數(shù)組實現(xiàn)棧,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • spring多數(shù)據(jù)源配置實現(xiàn)方法實例分析

    spring多數(shù)據(jù)源配置實現(xiàn)方法實例分析

    這篇文章主要介紹了spring多數(shù)據(jù)源配置實現(xiàn)方法,結(jié)合實例形式分析了spring多數(shù)據(jù)源配置相關(guān)操作技巧與使用注意事項,需要的朋友可以參考下
    2019-12-12
  • Java對象級別與類級別的同步鎖synchronized語法示例

    Java對象級別與類級別的同步鎖synchronized語法示例

    這篇文章主要為大家介紹了Java對象級別與類級別的同步鎖synchronized語法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-03-03
  • 詳解Lombok安裝及Spring Boot集成Lombok

    詳解Lombok安裝及Spring Boot集成Lombok

    這篇文章主要介紹了詳解Lombok安裝及Spring Boot集成Lombok,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • Spring事務(wù)管理下synchronized鎖失效問題的解決方法

    Spring事務(wù)管理下synchronized鎖失效問題的解決方法

    這篇文章主要給大家介紹了關(guān)于Spring事務(wù)管理下synchronized鎖失效問題的解決方法,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Spring具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-03-03

最新評論