JSP之文件上传
2015-11-16 15:38
585 查看
摘要:本文介绍怎么结合servlet,jsp来完成文件的上传
1,需要引入两个jar包
commons-fileupload-1.2.1.jar,commons-io-1.4.jar2,修改web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name> <servlet> <servlet-name>upload</servlet-name> <servlet-class>UploadServlet</servlet-class> <init-param> <param-name>filePath</param-name> <param-value>store</param-value> </init-param> <init-param> <param-name>tempFilePath</param-name> <param-value>temp</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>upload</servlet-name> <url-pattern>/upload</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
3,需要一个html界面来点击上传的文件路径等
<html> <head> <title>Upload</title> </head> <body > <form name="uploadForm" method="POST" enctype="MULTIPART/FORM-DATA" action="upload"> <table> <tr> <td><div align="right">User Name:</div></td> <td><input type="text" name="username" size="30"/> </td> </tr> <tr> <td><div align="right">Upload File1:</div></td> <td><input type="file" name="file1" size="30"/> </td> </tr> <tr> <td><div align="right">Upload File2:</div></td> <td><input type="file" name="file2" size="30"/> </td> </tr> <tr> <td><input type="submit" name="submit" value="upload"></td> <td><input type="reset" name="reset" value="reset"></td> </tr> </table> </form> </body> </html>
4,通过servlet来控制文件的上传
import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.Iterator; import java.util.List; import javax.servlet.ServletConfig; 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 String filePath;//存放上传文件的目录 private String tempFilePath;//存放临时文件的目录 @Override protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/plain"); //向客户端发送响应正文 PrintWriter outNet=res.getWriter(); //创建一个基于硬盘的FileItem工厂 DiskFileItemFactory factory=new DiskFileItemFactory(); //设置向硬盘写数据时所用的缓冲区的大小,此处为4k factory.setSizeThreshold(4*1024); //设置临时目录 factory.setRepository(new File(tempFilePath)); //设置一个文件上传处理器 ServletFileUpload upload=new ServletFileUpload(factory); //设置允许上传的文件的最大尺寸,此为4m upload.setFileSizeMax(4*1024*1024); try { List items=upload.parseRequest(req); Iterator ite=items.iterator(); while (ite.hasNext()) { FileItem item=(FileItem) ite.next(); if(item.isFormField()){ processFormField(item,outNet); //处理普通的表单域 }else{ processUploadedFile(item,outNet); //处理上传文件 } } outNet.close(); } catch (FileUploadException e) { throw new RuntimeException(); } } private void processUploadedFile(FileItem item, PrintWriter outNet) { String filename=item.getFieldName(); int index=filename.lastIndexOf("\\"); filename=filename.substring(index+1,filename.length()); long filesize=item.getSize(); if(filename.equals("")&&filesize==0)return; File uploadFile=new File(filePath+"/"+filename); try { item.write(uploadFile); outNet.print(filename+"is saved."); outNet.print("The size of"+filename+"is"+filesize+"\r\n"); } catch (Exception e) { throw new RuntimeException(); } } private void processFormField(FileItem item, PrintWriter outNet) { String name=item.getFieldName(); String value=item.getString(); outNet.println(name+":"+value+"\r\n"); } @Override public void init(ServletConfig config) throws ServletException { super.init(config); filePath=config.getInitParameter("filePath"); tempFilePath=config.getInitParameter("tempFilePath"); filePath=getServletContext().getRealPath("/")+"store"; tempFilePath=getServletContext().getRealPath("/")+"temp"; } }
相关文章推荐
- Gson 解析复杂json字符串
- javascript伸缩型菜单实现代码
- Excel数据转换为cvs,json,xml
- JavaScript基础——函数表达式
- 每天一篇javascript学习小结(Function对象)
- JavaScript中类与对象的介绍
- JSP入门:include指令与jsp:include动作标志
- json对象与json字符串之间的转化
- 举例讲解JavaScript中关于对象操作的相关知识
- js设置、获取单值cookie和多值cookie
- js中eval()和$.parseJSON()的区别和联系以及JSON.stringify()
- 各js取值。
- HTML带有JS的加载
- JavaScript修改和删除cookie
- week11---11月20日 JS基础(八)
- Javascript AMD模块化规范-备用
- Sublime Text插件:HTML+CSS+JAVASCRIPT+JSON快速格式化[转]
- JavaScript中对DOM节点的访问、创建、修改、删除
- 常用javascript表单验证汇总
- char.js