一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java組件commons-fileupload實現文件上傳

java組件commons-fileupload實現文件上傳

2020-06-23 11:41壹龍 JAVA教程

這篇文章主要介紹了java借助commons-fileupload組件實現文件上傳,具有一定的參考價值,感興趣的小伙伴們可以參考一下

一、所需要的包:
1、commons-fileupload-1.2.1.jar:
下載地址
http://commons.apache.org/downloads/download_fileupload.cgi
2、commons-io-1.4.jar:
下載地址
http://commons.apache.org/downloads/download_io.cgi

二、注意事項:
form表單里面要加上enctype="multipart/form-data" 

三、代碼示例 

1、jsp代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<%@ 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>upload</title>
</head>
<body>
<form action="uploadServlet" method="post" enctype="multipart/form-data">
 <table>
 <caption>上傳實例</caption>
 <tr>
  <td>姓名</td>
  <td>
  <input type="text" name="name">
  </td>
 </tr>
 <tr>
  <td>年齡</td>
  <td>
  <input type="text" name="age">
  </td>
 </tr>
 <tr>
  <td>照片</td>
  <td>
  <input type="file" name="image">
  </td>
 </tr>
 <tr>
  <td></td>
  <td>
  <input type="submit" value="提交">
  </td>
 </tr>
 </table>
</form>
</body>
</html>

2、UploadServlet代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package servlet;
 
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.Writer;
import java.util.Iterator;
import java.util.List;
 
import javax.servlet.ServletException;
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.FileUploadException;
import org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.util.Streams;
 
/**
 * 上傳servlet
 * @author lisanlai
 *
 */
public class UploadServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;
  
 public UploadServlet() {
 super();
 }
 
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 this.doPost(request, response);
 }
 
 @SuppressWarnings("unchecked")
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  
 response.setContentType("text/html");
 // 設置字符編碼為UTF-8, 這樣支持漢字顯示
 response.setCharacterEncoding("UTF-8");
 Writer o = response.getWriter();
  
 /**
  * 首先判斷form的enctype是不是multipart/form-data
  * 同時也判斷了form的提交方式是不是post
  * 方法:isMultipartContent(request)
  */
 
 if(ServletFileUpload.isMultipartContent(request)){
  request.setCharacterEncoding("utf-8");
  
  // 實例化一個硬盤文件工廠,用來配置上傳組件ServletFileUpload
  DiskFileItemFactory factory = new DiskFileItemFactory();
  
  //設置文件存放的臨時文件夾,這個文件夾要真實存在
  File fileDir = new File("../webapps/fileupload/tmp/");
  if(fileDir.isDirectory() && fileDir.exists()==false){
  fileDir.mkdir();
  }
  factory.setRepository(fileDir);
  
  //設置最大占用的內存
  factory.setSizeThreshold(1024000);
  
  //創建ServletFileUpload對象
  ServletFileUpload sfu = new ServletFileUpload(factory);
  sfu.setHeaderEncoding("utf-8");
  
  //設置單個文件最大值byte
  sfu.setFileSizeMax(102400000);
  
  //所有上傳文件的總和最大值byte
  sfu.setSizeMax(204800000);
  
  List<FileItem> items = null;
  
  try {
  items = sfu.parseRequest(request);
  }catch (SizeLimitExceededException e) {
  System.out.println("文件大小超過了最大值");
  } catch(FileUploadException e) {
  e.printStackTrace();
  }
  
  //取得items的迭代器
  Iterator<FileItem> iter = items==null?null:items.iterator();
  
  //圖片上傳后存放的路徑目錄
  File images = new File("D:/upload/images/");
  if(images.exists()==false){
  images.mkdirs();
  }
  //迭代items
  while(iter!=null && iter.hasNext()){
  FileItem item = (FileItem) iter.next();
   
  //如果傳過來的是普通的表單域
  if(item.isFormField()){
   System.out.print("普通的表單域:");
   System.out.print(new String(item.getFieldName()) + " ");
   System.out.println(new String(item.getString("UTF-8")));
  }
  //文件域
  else if(!item.isFormField()){
   System.out.println("源圖片:" + item.getName());
   String fileName = item.getName().substring(item.getName().lastIndexOf("\\"));
   BufferedInputStream in = new BufferedInputStream(item.getInputStream());
   //文件存儲在D:/upload/images目錄下,這個目錄也得存在
   BufferedOutputStream out = new BufferedOutputStream(
    new FileOutputStream(new File(images.getAbsolutePath()+ fileName)));
   Streams.copy(in, out, true);
   o.write("文件上傳成功");
  }
  }
 }else {
  System.out.println("表單的enctype 類型錯誤");
 }
 }
 
}

3、web.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
 <display-name>UploadTest</display-name>
 <welcome-file-list>
 <welcome-file>upload.jsp</welcome-file>
 </welcome-file-list>
 <servlet>
 <description></description>
 <display-name>UploadServlet</display-name>
 <servlet-name>UploadServlet</servlet-name>
 <servlet-class>servlet.UploadServlet</servlet-class>
 </servlet>
 <servlet-mapping>
 <servlet-name>UploadServlet</servlet-name>
 <url-pattern>/uploadServlet</url-pattern>
 </servlet-mapping>
</web-app>

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 岛国在线播放v片免费 | 天天拍天天色 | 女女性恋爱视频入口 | 四虎影视国产精品婷婷 | 久久丫线这里只精品 | 国产视频一区在线观看 | 卫生间被教官做好爽HH视频 | 亚洲国产成人久久精品影视 | 日本强不卡在线观看 | 国产高清在线不卡 | 我将她侵犯1~6樱花动漫在线看 | 久久精品一区二区三区资源网 | 久久一本综合 | 西野翔全部作品在线观看 | 国产v视频| 2019中文字幕在线视频 | 男人jj视频 | 欧美另类69xxx| 日本人在线看片 | 精品亚洲欧美中文字幕在线看 | 精品久久久久久亚洲 | 亚洲欧美另类在线观看 | 黑人chinese女人 | 色综合 成人| 亚洲色图第四页 | 国内自拍网红在线自拍综合 | 日日免费视频 | 九九大香尹人视频免费 | 羞羞私人影院可以直接免费观影吗 | 精品一区二区三区在线播放 | 久久视频在线视频 | 亚洲日本久久一区二区va | 欧美日韩国产精品va | 午夜一级影院 | 午夜久久精品 | 青草国产| 亚洲天堂h| 日本加勒比在线精品视频 | 午夜精品久久久久久 | 娇妻在床上迎合男人 | 日韩精品首页 |