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

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

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

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

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

2020-06-23 11:46廖雪峰 JAVA教程

這篇文章主要為大家詳細介紹了java組件commons-fileupload實現(xiàn)文件上傳,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

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

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@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隨機生成:

?
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
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()方法中初始化:

?
1
2
3
4
5
@Override
public void init(ServletConfig config) throws ServletException {
 super.init(config);
 this.uploaddir = config.getInitParameter("dir");
}

最后在web.xml中配置Servlet:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?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測試:

?
1
2
3
4
5
6
7
8
9
<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。

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品免费看久久久香蕉 | 99精品国产成人a∨免费看 | 关晓彤被草 | 国产在线欧美日韩精品一区二区 | 国产亚洲精品自在线亚洲情侣 | 毛片区 | 毛片网站大全 | 乌克兰肛交影视 | 黑人女性猛交xxxxxⅹxx | 四虎影音| 无限好资源第一片免费韩国 | 男人猛戳女人下部30分钟 | 美女的隐私脱裤子无遮挡 | chinese男同志videos | 精品欧美一区二区三区在线观看 | 国产精品自在线拍 | 欧美坐爱| 大香焦在线| 18美女光胸光屁屁洗澡 | 日韩 国产 欧美 | 国产精品吹潮香蕉在线观看 | 免费欧美一级片 | 久久三级视频 | 青青成人 | 亚洲黄视频在线观看 | www.久久艹| 亚洲大尺码| 欧美老骚 | 高h巨肉play 高h短篇辣肉各种姿势bl | 2022色婷婷综合久久久 | 成年人在线观看视频免费 | 嗯啊好爽视频 | 亚洲欧美日韩国产综合专区 | www.九九热 | 深夜精品高中女学生 | 国产精品一二三 | 18日本xxxxxxⅹxx96 | 操爽| 亚洲瑟瑟网 | 草莓香蕉绿巨人丝瓜榴莲18 | 国产美女亚洲精品久久久综合91 |