本人最近刚学了javaWeb,随手做了一个上传功能
Fileupload.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.util.*"%>
<!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">
<base href="<%=basePath%>">
<title>上传文件</title>
</head>
<body>
<%
request.setCharacterEncoding("GBK");
%>
<div id="main">
<form action="UploadServlet" method="post"
enctype="multipart/form-data" name="from1">
<center>
<p>选择要上传的文件,文件类型是Word、PDF等</p>
编 号:<input type="text" name="file"><br> <br>
请选择文件:<input type="file" name="file"><br> <br> <input
type="submit" value="上传"> <input type="reset" value="重置">
</center>
</form>
</div>
</body>
</html>
UploadServlet.java
package org.mvc.servlet;
import java.io.File;
import java.io.IOException;
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;
@SuppressWarnings("serial")
public class UploadServlet extends HttpServlet {
public void doGet(HttpServletRequest req,
HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@SuppressWarnings("unchecked")
public void doPost(HttpServletRequest req,
HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("GBK");
String realPath=this.getServletContext().getRealPath("/saveDir");//上传文件存放目录
String temp=getServletContext().getRealPath("/")+"temp";//临时目录
System.out.println("上传文件存放目录: "+realPath);
File f = new File(realPath) ;
if(!f.exists()){
f.mkdir() ;
}
// boolean isMultipart=ServletFileUpload.isMultipartContent(req);
// if(!isMultipart)
// return;
DiskFileItemFactory factory=new DiskFileItemFactory();//创建磁盘工厂
factory.setSizeThreshold(3*1024);//设置缓冲区的大小,此处为3MB
//factory.setRepository(new File(this.getServletContext().getRealPath("/")+"saveDir"));
//设置临时文件夹
factory.setRepository(new File(realPath)); //设置上传文件的目的地
ServletFileUpload upload=new ServletFileUpload(factory);//创建处理工具,产生servlet上传对象
upload.setFileSizeMax(3145728);//设置最大上传大小为3MB
List<FileItem> items=null;
try {
items=upload.parseRequest(req);//接收全部内容
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
List<FileItem> list = upload.parseRequest(req); //取得所有的上传文件信息
Iterator<FileItem> it = list.iterator();
while(it.hasNext()){
FileItem item = it.next();
if(item.isFormField()==false){ //不是一个普通的表单对象
String fieldName = item.getFieldName();
String fileName = item.getName(); //文件名
String contentType = item.getContentType(); //文件类型
boolean isInMemory = item.isInMemory(); //是否是保存在内存中
long sizeInBytes = item.getSize();
//取文件名
fileName=fileName.substring(fileName.lastIndexOf("\\")+1,fileName.length());
if(!fileName.equals("")&&!(fileName==null)){//如果fileName为null,即没有上传文件
File uploadedFile = new File(realPath,fileName);
try {
item.write(uploadedFile);
} catch (Exception e) {
e.printStackTrace();
}
}
}else{ //取得普通的对象[对于像文本框这种类型的使用]
if(item.getFieldName().equals("userName")){
System.out.println("我的测试:"+item.getString());
}
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
req.getRequestDispatcher("jsp/succes.jsp").forward(req, resp);
}
}
Fileupload.java
package org.mvc.vo;
public class Fileupload {
private String fileId;
private String fileName;
public String getFileId() {
return fileId;
}
public void setFileId(String fileId) {
this.fileId = fileId;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
}