在我们的web开发中,很多的时候都需要把本机的一些文件上传到web服务器上面去。
如:一个BBS系统,当用户使用这是系统的时候,能把本机的一些图片,文档上传到服务器上面去。然后其他用户可以去下载这些文件,那么这样的话,我们可以自己编程实现文件的上传,但是更好的方式是使用一些已有的组件帮助我们实现这种上传功能。
常用的上传组件:
Apache 的 Commons FileUpload
JavaZoom的UploadBean
jspSmartUpload
FileUpload下载地址:
http://commons.apache.org/fileupload/
下载:commons-fileupload-1.2.2-bin.zip 得到:commons-fileupload-1.2.2.jar
http://commons.apache.org/io/
下载:commons-io-1.4-bin.zip 得到:commons-io-1.4.jar
upload.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
|
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
< html >
< head >
< title >using commons Upload to upload file </ title >
</ head >
< style >
* { font-family: "宋体"; font-size: 14px }
</ style >
< body >
< p align = "center" > 请您选择需要上传的文件</ p >
< form id = "form1" name = "form1" method = "post" action = "servlet/fileServlet" enctype = "multipart/form-data" >
< table border = "0" align = "center" >
< tr >
< td >上传人:</ td >
< td >
< input name = "name" type = "text" id = "name" size = "20" ></ td >
</ tr >
< tr >
< td >上传文件:</ td >
< td >< input name = "file" type = "file" size = "20" ></ td >
</ tr >
< tr >
< td ></ td >< td >
< input type = "submit" name = "submit" value = "提交" >
< input type = "reset" name = "reset" value = "重置" >
</ td >
</ tr >
</ table >
</ form >
</ body >
</ html >
|
FileUploadServlet.java代码:
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
|
package com.b510.example;
import java.io.File;
import java.io.IOException;
import java.util.*;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
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.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
/**
*
* @author XHW
*
* @date 2011-7-26
*
*/
public class FileUploadServlet extends HttpServlet {
private static final long serialVersionUID = -7744625344830285257L;
private ServletContext sc;
private String savePath;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void init(ServletConfig config) {
// 在web.xml中设置的一个初始化参数
savePath = config.getInitParameter( "savePath" );
sc = config.getServletContext();
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding( "UTF-8" );
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List items = upload.parseRequest(request);
Iterator itr = items.iterator();
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next();
if (item.isFormField()) {
System.out.println( "表单参数名:" + item.getFieldName() + ",表单参数值:" + item.getString( "UTF-8" ));
} else {
if (item.getName() != null && !item.getName().equals( "" )) {
System.out.println( "上传文件的大小:" + item.getSize());
System.out.println( "上传文件的类型:" + item.getContentType());
// item.getName()返回上传文件在客户端的完整路径名称
System.out.println( "上传文件的名称:" + item.getName());
File tempFile = new File(item.getName());
//上传文件的保存路径
File file = new File(sc.getRealPath( "/" ) + savePath, tempFile.getName());
item.write(file);
request.setAttribute( "upload.message" , "上传文件成功!" );
} else {
request.setAttribute( "upload.message" , "没有选择上传文件!" );
}
}
}
} catch (FileUploadException e){
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
request.setAttribute( "upload.message" , "上传文件失败!" );
}
request.getRequestDispatcher( "/uploadResult.jsp" ).forward(request, response);
}
}
|
uploadResult.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
|
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
< html >
< head >
< title >uploadResult</ title >
< meta http-equiv = "pragma" content = "no-cache" >
< meta http-equiv = "cache-control" content = "no-cache" >
< meta http-equiv = "expires" content = "0" >
< meta http-equiv = "keywords" content = "keyword1,keyword2,keyword3" >
< meta http-equiv = "description" content = "This is my page" >
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</ head >
< body >
${requestScope['upload.message'] }
< a href = "/upload/uploadFile.jsp" >上传文件</ a >
</ body >
</ html >
|
web.xml
代码:
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
|
<? xml version = "1.0" encoding = "UTF-8" ?>
< web-app version = "2.5"
xmlns = "http://java.sun.com/xml/ns/javaee"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
< servlet >
< description >This is the description of my J2EE component</ description >
< display-name >This is the display name of my J2EE component</ display-name >
< servlet-name >FileUploadServlet</ servlet-name >
< servlet-class >com.b510.example.FileUploadServlet</ servlet-class >
<!--设置初始化参数-->
< init-param >
< param-name >savePath</ param-name >
< param-value >uploads</ param-value >
</ init-param >
</ servlet >
< servlet-mapping >
< servlet-name >FileUploadServlet</ servlet-name >
< url-pattern >/servlet/fileServlet</ url-pattern >
</ servlet-mapping >
< welcome-file-list >
< welcome-file >index.jsp</ welcome-file >
< welcome-file >uploadFile.jsp</ welcome-file >
</ welcome-file-list >
</ web-app >
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。