common-fileUpload文件上传(DiskFileItemFactory方式)
2014-04-17 21:10
399 查看
所需包:commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar
1、前台页面
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gbk" pageEncoding="gbk"%>
<html>
<body>
<form action="MultipartTestServlet" 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>
</body>
</html>2、上传的后台代码
public class UploadServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置request编码,主要是为了处理普通输入框中的中文问题
request.setCharacterEncoding("gbk");
//这里对request进行封装,RequestContext提供了对request多个访问方法
RequestContext requestContext = new ServletRequestContext(request);
//判断表单是否是Multipart类型的。
if(FileUpload.isMultipartContent(requestContext)){
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
//设置上传文件大小的上限,-1表示无上限
upload.setSizeMax(100*1024*1024);
List items = new ArrayList();
try {
//上传文件,并解析出所有的表单字段,包括普通字段和文件字段
items = upload.parseRequest(request);
} catch (FileUploadException e1) {
System.out.println("文件上传发生错误" + e1.getMessage());
}
//下面对每个字段进行处理,分普通字段和文件字段
Iterator it = items.iterator();
while(it.hasNext()){
FileItem fileItem = (FileItem) it.next();
//如果是普通字段
if(fileItem.isFormField()){
System.out.println(fileItem.getFieldName() + " " + fileItem.getName() + " " + new String(fileItem.getString().getBytes("iso8859-1"), "gbk"));
}else{
System.out.println(fileItem.getFieldName() + " " +
fileItem.getName() + " " +
fileItem.isInMemory() + " " +
fileItem.getContentType() + " " +
fileItem.getSize());
//保存文件,其实就是把缓存里的数据写到目标路径下
if(fileItem.getName()!=null && fileItem.getSize()!=0){
File fullFile = new File(fileItem.getName());
File newFile = new File("c:/temp/" + fullFile.getName());
try {
fileItem.write(newFile);
} catch (Exception e) {
e.printStackTrace();
}
}else{
System.out.println("文件没有选择 或 文件内容为空");
}
}
}
}
}
}3、编译和配置servlet
在web-inf路径下的web.xml,
1、前台页面
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gbk" pageEncoding="gbk"%>
<html>
<body>
<form action="MultipartTestServlet" 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>
</body>
</html>2、上传的后台代码
public class UploadServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置request编码,主要是为了处理普通输入框中的中文问题
request.setCharacterEncoding("gbk");
//这里对request进行封装,RequestContext提供了对request多个访问方法
RequestContext requestContext = new ServletRequestContext(request);
//判断表单是否是Multipart类型的。
if(FileUpload.isMultipartContent(requestContext)){
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
//设置上传文件大小的上限,-1表示无上限
upload.setSizeMax(100*1024*1024);
List items = new ArrayList();
try {
//上传文件,并解析出所有的表单字段,包括普通字段和文件字段
items = upload.parseRequest(request);
} catch (FileUploadException e1) {
System.out.println("文件上传发生错误" + e1.getMessage());
}
//下面对每个字段进行处理,分普通字段和文件字段
Iterator it = items.iterator();
while(it.hasNext()){
FileItem fileItem = (FileItem) it.next();
//如果是普通字段
if(fileItem.isFormField()){
System.out.println(fileItem.getFieldName() + " " + fileItem.getName() + " " + new String(fileItem.getString().getBytes("iso8859-1"), "gbk"));
}else{
System.out.println(fileItem.getFieldName() + " " +
fileItem.getName() + " " +
fileItem.isInMemory() + " " +
fileItem.getContentType() + " " +
fileItem.getSize());
//保存文件,其实就是把缓存里的数据写到目标路径下
if(fileItem.getName()!=null && fileItem.getSize()!=0){
File fullFile = new File(fileItem.getName());
File newFile = new File("c:/temp/" + fullFile.getName());
try {
fileItem.write(newFile);
} catch (Exception e) {
e.printStackTrace();
}
}else{
System.out.println("文件没有选择 或 文件内容为空");
}
}
}
}
}
}3、编译和配置servlet
在web-inf路径下的web.xml,
<servlet> <servlet-name>UploadServlet</servlet-name> <servlet-class> com.webapp.upload.UploadServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>UploadServlet</servlet-name> <url-pattern>/upload/uploadInfo</url-pattern> </servlet-mapping>
相关文章推荐
- 使用common-fileUpload制作文件上传(DiskFileItemFactory方式)
- 【JavaWeb-13】文件上传DiskFileItemFactory、ServletFileUpload以及注意事项、文件下载及注意事项
- Servlet文件上传(ServletFIleUpload,DiskFileItemFactory,FileItem)
- 文件上传组件File,DiskFileItemFactory ,ServletFileUpload ,FileItem
- Servlet文件上传(ServletFIleUpload,DiskFileItemFactory,FileItem)
- 文件上传和下载-ServletFileUpload and DiskFileItemFactory
- 文件的上传-servlet实现文件上传---核心API—DiskFileItemFactory
- 文件的上传-servlet实现文件上传---核心API—DiskFileItemFactory
- servlet-文件上传:DiskFileItemFactory
- 文件上传—DiskFileItemFactory核心类
- DiskFileItemFactory 文件上传存储
- Servlet文件下传(ServletFIleUpload,DiskFileItemFactory,FileItem)
- DiskFileItemFactory 文件上传
- (上传文件错误)java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory
- File,DiskFileItemFactory,ServletFileUpload,FileItem
- 文件上传:java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactory
- spring MVC 上传多文件问题:java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactory
- 文件上传组件File,DiskFileItemFactory ,ServletFileUpload ,FileItem
- File,DiskFileItemFactory,ServletFileUpload,File...
- 使用DiskFileItemFactory在Action中获得JSP表单内容(用在有图片上传功能的表单中)