欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java开发之文件上传,java文件上传,依赖2个jar包:com

来源: javaer 分享于  点击 17950 次 点评:94

Java开发之文件上传,java文件上传,依赖2个jar包:com


依赖2个jar包:commons-fileupload,commons-io。

代码如下:

    package com.example.web;      import java.io.File;      import java.io.FileOutputStream;      import java.io.IOException;      import java.io.InputStream;      import java.io.OutputStream;      import java.io.PrintWriter;      import java.text.DateFormat;      import java.text.SimpleDateFormat;      import java.util.Date;      import java.util.List;      import java.util.UUID;      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;      import org.apache.commons.io.IOUtils;      public class FileUpload extends HttpServlet {          public void doGet(HttpServletRequest request, HttpServletResponse response)                  throws ServletException, IOException {              request.setCharacterEncoding("UTF-8");              response.setContentType("text/html;charset=utf-8");              PrintWriter out=response.getWriter();              //指定文件存放目录              String storePath=getServletContext().getRealPath("WEB-INF/files");              File file=new File(storePath);              //如果目录不存在,需要创建              if(!file.exists()){                  file.mkdirs();              }              //要检查是不是enctype=multipart/form-data提交过来的数据              boolean isMultipart=ServletFileUpload.isMultipartContent(request);              //如果不是,需要处理              if(!isMultipart){                  out.write("请将enctype设置成multipart/form-data类型");                  response.setHeader("Refresh", "1;URL="+request.getContextPath());                  return;              }              //去生成一个文件上传的FileUpload对象              DiskFileItemFactory factory=new DiskFileItemFactory();              //设置一个临时目录              //factory.setRepository(new File("E:/temp"));temp文件需要临时创建,我已经删掉了              ServletFileUpload upload=new ServletFileUpload(factory);              //将用户的请求转化为List<FileItem>              try {                  List<FileItem> items=upload.parseRequest(request);                  //遍历List<FileItem>中的数据                  for (FileItem item : items) {                      //如果部分文件没有上传                      if("".equals(item.getName())){                          continue;                      }                      //判断是普通字段                      if(item.isFormField()){                          String fieldName=item.getFieldName();                          String fieldValue=item.getString("UTF-8");                          System.out.println(fieldName+":"+fieldValue);                      }else{                          //是上传的文件                          //需要获取文件名,有可能是路径                          String fileName=item.getName();                          fileName=fileName.substring(fileName.lastIndexOf(File.separator)+1);                          //文件名同名问题                          fileName=UUID.randomUUID().toString()+"_"+fileName;                          //解决一个文件夹下的文件过多的问题                          //用时间来生成子目录                          //String childPath=generateDir(storePath);                          //用hashcode来生成子目录                          String childPath=generateDir(storePath,fileName);                          //获取上传文件的数据                          InputStream is=item.getInputStream();                          OutputStream os=new FileOutputStream(storePath+File.separator+childPath+File.separator+fileName);                          IOUtils.copy(is, os);                          os.close();                          is.close();                          //item.delete();//清空临时文件                      }                  }                  out.write("文件上传成功<a href='"+request.getContextPath()+"'>继续上传</a>");              } catch (FileUploadException e) {                  e.printStackTrace();              }          }          private String generateDir(String storePath, String fileName) {              int hashcode=fileName.hashCode();              int dir1=hashcode &amp;  0xf;              int dir2=(hashcode &amp; 0xf0)>>4;              String childPath=dir1+File.separator+dir2;              File file=new File(storePath,childPath);              if(!file.exists()){                  file.mkdirs();              }              return childPath;          }          private String generateDir(String storePath) {              DateFormat df=new SimpleDateFormat("yyyyMMddhhmmss");              String childPath=df.format(new Date());              File file=new File(storePath, childPath);              if(!file.exists()){                  file.mkdirs();              }              return childPath;          }          public void doPost(HttpServletRequest request, HttpServletResponse response)                  throws ServletException, IOException {              this.doGet(request, response);          }      }  
相关栏目:

用户点评