设置上传文件的大小

来源:互联网 发布:黄金交易软件排行 编辑:程序博客网 时间:2024/05/14 13:49
 * 单个文件大小限制
    > sfu.setFileSizeMax(100*1024):限制单个文件大小为100KB
    > 上面的方法调用,必须在解析开始之前调用!
    > 如果上传的文件超出限制,在parseRequest()方法执行时,会抛出异常!FileUploadBase.FileSizeLimitExceededException
  * 整个请求所有数据大小限制
    > sfu.setSizeMax(1024 * 1024);//限制整个表单大小为1M

    > 这个方法也是必须在parseRequest()方法之前调用

    > 如果上传的文件超出限制,在parseRequest()方法执行时,会抛出异常!FileUploadBase.SizeLimitExceededException

package servlet;import java.io.File;import java.io.IOException;import java.io.PrintWriter;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.FileUploadBase;import org.apache.commons.fileupload.FileUploadException;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;public class UploadServlet3 extends HttpServlet {public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {/* * 创建工厂 */DiskFileItemFactory factory=new DiskFileItemFactory();/* * 创建解析器*/ServletFileUpload sfu=new ServletFileUpload(factory);//限制单个文件大小为100KBsfu.setFileSizeMax(100*1024);//限制整个表单大小为1Msfu.setSizeMax(1024*1024);/* * 使用解析器来解析request,得到FileItem集合 */try {List <FileItem> fileItem=sfu.parseRequest(request);FileItem fi=fileItem.get(1);////////////////////////////* * 1、得到文件保存的路径 */String root=this.getServletContext().getRealPath("/WEB-INF/files/");/* * 2. 生成二层目录 *   1). 得到文件名称 *   2). 得到hashCode *   3). 转换成16进制 *   4). 获取前二个字符用来生成目录 *///1.得到文件名称String filename=fi.getName();/* * 处理文件名的绝对路径 */int index=filename.lastIndexOf("//");if(index!=-1){filename=filename.substring(index+1);}/* * 为了避免文件同名 */filename=CommonUtils.uuid()+"_"+filename;//2.得到hashcodeint hashcode=filename.hashCode();//3.转换成十六进制String hex=Integer.toHexString(hashcode);//4. 获取hex的前两个字母,与root连接在一起,生成一个完整的路径File dirFile=new File(root,hex.charAt(0)+"/"+hex.charAt(1));    dirFile.mkdirs();  //创建目录链    //5.创建目录文件    File desFile=new File(dirFile,filename);    try {fi.write(desFile);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (FileUploadException e) {// TODO Auto-generated catch blockif (e instanceof FileUploadBase.FileSizeLimitExceededException){request.setAttribute("msg", "您上传的文件超出了100KB!");request.getRequestDispatcher("/index.jsp").forward(request, response);}}}}


0 0
原创粉丝点击