最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java組件commons-fileupload文件上傳示例

 更新時間:2016年10月14日 14:14:46   作者:廖雪峰  
這篇文章主要為大家詳細介紹了java組件commons-fileupload實現(xiàn)文件上傳,具有一定的參考價值,感興趣的小伙伴們可以參考一下

文件上傳在Web應用中非常普遍,要在Java Web環(huán)境中實現(xiàn)文件上傳功能非常容易,因為網上已經有許多用Java開發(fā)的組件用于文件上傳,本文以使用最普遍的commons-fileupload組件為例,演示如何為Java Web應用添加文件上傳功能。

commons-fileupload組件是Apache的一個開源項目之一,可以從http://commons.apache.org/fileupload/下載。該組件簡單易用,可實現(xiàn)一次上傳一個或多個文件,并可限制文件大小。

下載后解壓zip包,將commons-fileupload-1.x.jar復制到tomcat的webapps/你的webapp/WEB-INF/lib/下,如果目錄不存在請自建目錄。

新建一個UploadServlet.java用于文件上傳:

package com.liaoxuefeng.web;

public class FileUploadServlet extends HttpServlet {

 private String uploadDir = "C:\\temp";

 @Override
 protected void doPost(HttpServletRequest req, HttpServletResponse resp)
 throws ServletException, IOException
 {
 // TODO:
 }
}

當servlet收到瀏覽器發(fā)出的Post請求后,在doPost()方法中實現(xiàn)文件上傳,我們需要遍歷FileItemIterator,獲得每一個FileItemStream:

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
 throws ServletException, IOException
{
 try {
 ServletFileUpload upload = new ServletFileUpload();
 // set max file size to 1 MB:
 upload.setFileSizeMax(1024 * 1024);
 FileItemIterator it = upload.getItemIterator(req);
 // handle with each file:
 while (it.hasNext()) {
 FileItemStream item = it.next();
 if (! item.isFormField()) {
 // it is a file upload:
 handleFileItem(item);
 }
 }
 req.getRequestDispatcher("success.jsp").forward(req, resp);
 }
 catch(FileUploadException e) {
 throw new ServletException("Cannot upload file.", e);
 }
}

在handleFileItem()方法中讀取上傳文件的輸入流,然后寫入到uploadDir中,文件名通過UUID隨機生成:

void handleFileItem(FileItemStream item) throws IOException {
 System.out.println("upload file: " + item.getName());
 File newUploadFile = new File(uploadDir + "/" + UUID.randomUUID().toString());
 byte[] buffer = new byte[4096];
 InputStream input = null;
 OutputStream output = null;
 try {
 input = item.openStream();
 output = new BufferedOutputStream(new FileOutputStream(newUploadFile));
 for (;;) {
 int n = input.read(buffer);
 if (n==(-1))
 break;
 output.write(buffer, 0, n);
 }
 }
 finally {
 if (input!=null) {
 try {
 input.close();
 }
 catch (IOException e) {}
 }
 if (output!=null) {
 try {
 output.close();
 }
 catch (IOException e) {}
 }
 }
}

如果要在web.xml配置文件中讀取指定的上傳文件夾,可以在init()方法中初始化:

@Override
public void init(ServletConfig config) throws ServletException {
 super.init(config);
 this.uploaddir = config.getInitParameter("dir");
}

最后在web.xml中配置Servlet:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
 PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
 <servlet>
 <servlet-name>UploadServlet</servlet-name>
 <servlet-class>com.liaoxuefeng.web.FileUploadServlet</servlet-class>
 </servlet>
 <servlet-mapping>
 <servlet-name>UploadServlet</servlet-name>
 <url-pattern>/upload</url-pattern>
 </servlet-mapping>
</web-app>

配置好Servlet后,啟動Tomcat或Resin,寫一個簡單的index.htm測試:

<html>
<body>
<p>FileUploadServlet Demo</p>
<form name="form1" action="upload" method="post" enctype="multipart/form-data">
 <input type="file" name="file" />
 <input type="submit" name="button" value="Submit" />
</form>
</body>
</html>

注意action="upload"指定了處理上傳文件的FileUploadServlet的映射URL。

當上傳成功后,顯示success.jsp,否則,拋出異常。如果上傳的文件大小超過了我們設定的1MB,就會得到一個FileSizeLimitExceededException。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Java設計模式之命令模式(Command模式)介紹

    Java設計模式之命令模式(Command模式)介紹

    這篇文章主要介紹了Java設計模式之命令模式(Command模式)介紹,本文講解了Command模式的定義、如何使用命令模式等內容,需要的朋友可以參考下
    2015-03-03
  • springboot bean循環(huán)依賴實現(xiàn)以及源碼分析

    springboot bean循環(huán)依賴實現(xiàn)以及源碼分析

    最近在使用Springboot做項目的時候,遇到了一個循環(huán)依賴的 問題,所以下面這篇文章主要給大家介紹了關于springboot bean循環(huán)依賴實現(xiàn)以及源碼分析的相關資料,需要的朋友可以參考下
    2021-06-06
  • Java實現(xiàn)單鏈表翻轉實例代碼

    Java實現(xiàn)單鏈表翻轉實例代碼

    Java實現(xiàn)單鏈表反轉,遞歸和非遞歸兩種形式。接下來通過本文給大家分享Java實現(xiàn)單鏈表翻轉實例代碼,需要的的朋友參考下
    2017-03-03
  • web中拖拽排序和java后臺交互實現(xiàn)方法示例

    web中拖拽排序和java后臺交互實現(xiàn)方法示例

    這篇文章主要給大家介紹了關于web中拖拽排序和java后臺交互實現(xiàn)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-12-12
  • 純Java實現(xiàn)數(shù)字證書生成簽名的簡單實例

    純Java實現(xiàn)數(shù)字證書生成簽名的簡單實例

    下面小編就為大家?guī)硪黄僇ava實現(xiàn)數(shù)字證書生成簽名的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • Java線程池配置的一些常見誤區(qū)總結

    Java線程池配置的一些常見誤區(qū)總結

    這篇文章主要給大家介紹了關于Java線程池配置的一些常見誤區(qū),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • Java線程池復用線程的秘密你知道嗎

    Java線程池復用線程的秘密你知道嗎

    這篇文章主要為大家詳細介紹了Java線程池復用線程的秘密,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望您能夠多多關注

    2022-03-03
  • java?hutool工具類處理JSON的使用方法

    java?hutool工具類處理JSON的使用方法

    hutool是一個java基礎工具類,該工具類經過長期的發(fā)展,API已經非常齊全,下面這篇文章主要給大家介紹了關于java?hutool工具類處理JSON的使用方法,需要的朋友可以參考下
    2024-04-04
  • java常用工具類 XML工具類、數(shù)據(jù)驗證工具類

    java常用工具類 XML工具類、數(shù)據(jù)驗證工具類

    這篇文章主要為大家詳細介紹了java常用工具類,包括XML工具類、數(shù)據(jù)驗證工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Idea?編譯并運行?Spark?3.1.1?源碼的方法

    Idea?編譯并運行?Spark?3.1.1?源碼的方法

    這篇文章主要介紹了Idea?編譯并運行?Spark?3.1.1源碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-11-11

最新評論

秭归县| 锦屏县| 土默特左旗| 高尔夫| 金塔县| 日喀则市| 府谷县| 嫩江县| 石渠县| 西贡区| 萨迦县| 大兴区| 遂川县| 夏河县| 阿荣旗| 灌云县| 遂川县| 页游| 屏边| 阿拉善左旗| 桦川县| 东丰县| 赤峰市| 广平县| 新源县| 华蓥市| 河西区| 亳州市| 寿光市| 宁安市| 玛曲县| 木兰县| 泾川县| 兴安盟| 星子县| 浑源县| 城口县| 松阳县| 武安市| 涞水县| 峨眉山市|