Servlet中配合common-fileupload.jar和common-io.jar进行文件上传
2013-04-30 18:58
459 查看
common-fileupload.jar和common-io.jar是apache组织下文件上传的开发包,有了这两个jar包,文件上传将变得方便很多。
①上传文件的界面
②上传处理的servlet,首先需要在web.xml中配置
③接下来是处理servlet
①上传文件的界面
文件上传. <br> <form action="FileUpload" method="post" enctype="multipart/form-data"> userName:<input type="text" name="userName" /><br/> file1:<input type="file" name="myfile1"/><br/> file2:<input type="file" name="myfile2"/><br/> <input type="submit" name="上传"> </form>
②上传处理的servlet,首先需要在web.xml中配置
<servlet> <servlet-name>FileUpload</servlet-name> <servlet-class>edu.njcit.upload.FileUpload</servlet-class> </servlet> <servlet-mapping> <servlet-name>FileUpload</servlet-name> <url-pattern>/FileUpload</url-pattern> </servlet-mapping>
③接下来是处理servlet
package edu.njcit.upload; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.*; 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.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; public class FileUpload extends HttpServlet { private static final long serialVersionUID = 1L; public void destroy() { } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { DiskFileItemFactory factory = new DiskFileItemFactory(); // 得到WEB-ROOT下某个文件夹的实际的,绝对的路径 String path = request.getRealPath("/fileUpload"); // 当文件大于默认的10K时,文件将放到该仓库临时存储 factory.setRepository(new File(path)); // 修改默认的10K为1M大小 factory.setSizeThreshold(1024 * 1024);// 1M ServletFileUpload upload = new ServletFileUpload(factory); try { List<FileItem> list = upload.parseRequest(request); // 遍历 for (FileItem item : list) { String name = ""; // 1、当是简单的文本域时 if (item.isFormField()) { name = item.getFieldName();// userName // 编码格式转换 name = new String(name.getBytes("gbk"), "UTF-8"); String inputValue = item.getString("UTF-8"); System.out.println(name + "=" + inputValue); request.setAttribute(name, inputValue); } else { // 2、是文件 // 获取文件不带路径的名字,注意opera浏览器会有路径信息 name = item.getFieldName(); name = new String(name.getBytes("gbk"), "UTF-8"); String value = item.getName(); // 解决opera浏览器问题 int start = value.lastIndexOf("\\"); String fileName = value.substring(start + 1); fileName = new String(fileName.getBytes("gbk"), "UTF-8"); System.out.println("fileName:" + fileName); request.setAttribute(name, fileName); // 写文件 item.write(new File(path, fileName)); /** // 手动写磁盘start OutputStream out = new FileOutputStream(new File(path, fileName)); InputStream in = item.getInputStream(); byte buffer[] = new byte[1024]; int lenght = 0; while ((lenght = in.read(buffer)) != -1) { out.write(buffer, 0, lenght); } out.close(); in.close(); // 手动写磁盘end */ } } } catch (Exception e) { e.printStackTrace(); } // /WEB-INF/page/fileUploadResult.jsp去掉WEB-INF前面的/也是可以的 request.getRequestDispatcher("/WEB-INF/page/fileUploadResult.jsp") .forward(request, response); } public void init() throws ServletException { } }④后台写磁盘结束后,将跳转到fileUploadResult.jsp,如下:
上传结果: <br> userName:${requestScope.userName } <br/> file1:${requestScope.myfile1} <br/> file2:${requestScope.myfile2}
相关文章推荐
- SpringMvc的Common- upload的MutilpartFile转换为io.File--进行Excel文件上传
- 文件上传(使用commons-fileupload.jar以及commons-io.jar这两个jar文件)
- (8)common-upload文件上传出现org.apache.commons.fileupload.FileUploadBase$IOFileUploadException
- 文件上传 使用apache common-fileupload.jar
- 使用common-file-upload包进行文件上传。
- struts2 文件上传 和 ServletFileUpload的矛盾
- 手把手教Jsp上传文件(FileUpload+Servlet)
- 使用ajaxfileupload.js进行文件上传,文件可以上传成功,但是不走success回调函数解决办法。
- commons-fileupload.jar实现文件上传
- commonFileUpload处理上传文件和HTTP文件上传协议
- 文件上传和下载-ServletFileUpload
- JSP+Servlet中使用jspsmartupload.jar进行图片上传下载
- [异常] Java文件上传异常org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of mul
- Java使用SmartUploadServlet进行文件的上传与下载
- jQuery文件上传——blueimp.github.io/jquery-File-Upload中文
- 解决CommonFileUpload上传文件不能获取多选框
- 文件上传和下载-ServletFileUpload
- ajaxFileUpload 异步上传文件配合PHP的使用
- 使用servlet实现文件上传(用common-fileUpload和common-io包)
- 遇到问题-----uploadify上传文件ServletFileUpload.isMultipartContent(request)为false