java web 中文件上传的实现
1,view层
<%@ page language="java" import="java.util.*"
contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<html>
<body>
<form action="servlet/UpDownLoadFile" enctype="multipart/form-data"
method="post">
<input type="text" name="username" />
<br />
<input type="file" name="myfile" />
<br />
<input type="file" name="myfile" />
<br />
<input type="submit" />
</form>
<br />
</body>
</html>
2,文件上传类File_upload
package file_upload;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.RequestContext;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.servlet.ServletRequestContext;
public class File_upload {
private String dir_name = "BooksImage";
public HashMap begin_upload(HttpServletRequest request,
HttpServletResponse response) {
HashMap param_hm = new HashMap();
try {
// jsp file encode utf-8 must
request.setCharacterEncoding("utf-8");
RequestContext requestContext = new ServletRequestContext(request);
if (FileUpload.isMultipartContent(requestContext)) {
DiskFileItemFactory factory = new DiskFileItemFactory();
File temp_file = new File(request.getRealPath("") + "//"
+ getDir_name() + "//");
temp_file.mkdir();
factory.setRepository(temp_file);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("utf-8");
upload.setSizeMax(-1);
List items = new ArrayList();
items = upload.parseRequest(request);
Iterator it = items.iterator();
while (it.hasNext()) {
FileItem fileItem = (FileItem) it.next();
if (fileItem.isFormField()) {
param_hm.put(fileItem.getFieldName(), new String(
fileItem.getString().getBytes("iso8859-1"),
"utf-8"));
} else {
if (fileItem.getName() != null
&& fileItem.getSize() != 0) {
File fullFile = new File(fileItem.getName());
File newFile = new File(request.getRealPath("")
+ "//" + getDir_name() + "//"
+ fullFile.getName());
fileItem.write(newFile);
} else {
System.out.println("文件没有选择 或 文件内容为空");
}
}
}
}
} catch (UnsupportedEncodingException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return param_hm;
}
public void setDir_name(String dir_name) {
this.dir_name = dir_name;
}
public String getDir_name() {
return dir_name;
}
}
备注:private String dir_name = "BooksImage";此处成员变量,代表你上传时将在服务器你的项目目录:WEB-INF吓创建一个以此变量名称一样的文件夹作为用户上传目录,如果此目录存在,不会创建,直接将文件写入!是不是使用啊!
使用这个类需要file_upload.jar包:下载地址:http://download.youkuaiyun.com/source/337184
<%@ page language="java" import="java.util.*"
contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<html>
<body>
<form action="servlet/UpDownLoadFile" enctype="multipart/form-data"
method="post">
<input type="text" name="username" />
<br />
<input type="file" name="myfile" />
<br />
<input type="file" name="myfile" />
<br />
<input type="submit" />
</form>
<br />
</body>
</html>
2,文件上传类File_upload
package file_upload;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.RequestContext;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.servlet.ServletRequestContext;
public class File_upload {
private String dir_name = "BooksImage";
public HashMap begin_upload(HttpServletRequest request,
HttpServletResponse response) {
HashMap param_hm = new HashMap();
try {
// jsp file encode utf-8 must
request.setCharacterEncoding("utf-8");
RequestContext requestContext = new ServletRequestContext(request);
if (FileUpload.isMultipartContent(requestContext)) {
DiskFileItemFactory factory = new DiskFileItemFactory();
File temp_file = new File(request.getRealPath("") + "//"
+ getDir_name() + "//");
temp_file.mkdir();
factory.setRepository(temp_file);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("utf-8");
upload.setSizeMax(-1);
List items = new ArrayList();
items = upload.parseRequest(request);
Iterator it = items.iterator();
while (it.hasNext()) {
FileItem fileItem = (FileItem) it.next();
if (fileItem.isFormField()) {
param_hm.put(fileItem.getFieldName(), new String(
fileItem.getString().getBytes("iso8859-1"),
"utf-8"));
} else {
if (fileItem.getName() != null
&& fileItem.getSize() != 0) {
File fullFile = new File(fileItem.getName());
File newFile = new File(request.getRealPath("")
+ "//" + getDir_name() + "//"
+ fullFile.getName());
fileItem.write(newFile);
} else {
System.out.println("文件没有选择 或 文件内容为空");
}
}
}
}
} catch (UnsupportedEncodingException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return param_hm;
}
public void setDir_name(String dir_name) {
this.dir_name = dir_name;
}
public String getDir_name() {
return dir_name;
}
}
备注:private String dir_name = "BooksImage";此处成员变量,代表你上传时将在服务器你的项目目录:WEB-INF吓创建一个以此变量名称一样的文件夹作为用户上传目录,如果此目录存在,不会创建,直接将文件写入!是不是使用啊!
使用这个类需要file_upload.jar包:下载地址:http://download.youkuaiyun.com/source/337184