所需jar包:commons-fileupload.jar commons-io.jar
jsp頁面:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>上傳文件</title>
</head>
<!-- method必須爲"post" enctype設置爲"multipart/form-data" -->
<body>
<form action="${pageContext.request.contextPath}/uploadServlet"
method="post" enctype="multipart/form-data">
姓名:<input type="text" name="username"><br>
照片:<input type="file" name="picture"><br>
<input type="submit" value="上傳">
<input type="reset" value="取消">
</form>
</body>
</html>
Servlet代碼:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
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.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class UploadServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 4467513433586454565L;
@SuppressWarnings("unchecked")
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//創建磁盤工廠
DiskFileItemFactory factory=new DiskFileItemFactory();
//創建處理工具
ServletFileUpload upload=new ServletFileUpload(factory);
upload.setFileSizeMax(3145728);
try {
//接收全部內容
List<FileItem> items=upload.parseRequest(request);
Iterator<FileItem> iterator=items.iterator();
FileItem item;
String fieldName;
String fileName;
String contentType;
String path;
long sizeBytes;
OutputStream outputStream=null;
InputStream inputStream=null;
byte[] buffer=new byte[1024];
while(iterator.hasNext()){
item=iterator.next();
fieldName=item.getFieldName();
System.out.println(fieldName);
if(!item.isFormField()){ //不是普通的文本文件
fileName=item.getName();
contentType=item.getContentType();
sizeBytes=item.getSize();
path=this.getServletContext().getRealPath("/WEB-INF/upload")
+File.separator+fileName;
inputStream=item.getInputStream();
//若文件不存在FileoutputStream會自動創建文件,但若路徑也不存在則報錯
outputStream=new FileOutputStream(path);
int temp=0;
while((temp=inputStream.read(buffer, 0, buffer.length))!=-1){
outputStream.write(buffer);
}
request.setAttribute("fileName", fileName);
request.setAttribute("contentType", contentType);
request.setAttribute("sizeBytes", sizeBytes);
}else{
String username=new String(item.getString().getBytes("iso8859-1"),"utf-8");
request.setAttribute("username",username);
}
}
inputStream.close();
outputStream.close();
request.getRequestDispatcher("/success.jsp").forward(request, response);
} catch (FileUploadException e) {
response.sendRedirect("/error.jsp");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}