Java 上传文件

package org.wjjia.key.com;


import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import org.apache.commons.io.FileUtils;


public class UpFile extends HttpServlet{
private static final long serialVersionUID = -2441767250729580445L;


@Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
/* //创建文件工厂对象
  DiskFileItemFactory factory=new DiskFileItemFactory();
//将文件保存在内存还是磁盘临时文件夹的临界值 
  factory.setSizeThreshold(1024*200);
  File tempDirectory=new File("d:\\test");
  factory.setRepository(tempDirectory);
//文件上传类
  ServletFileUpload upload=new ServletFileUpload(factory);


//设置上传的文件大小临界值,超出会报错
  upload.setSizeMax(1024*1024*5);
  String fileName=null;
  String name=null;
  String pcDate=null;
//接收用户上传信息
  try {
        List items=upload.parseRequest(req);
        //遍历items
         for (FileItem item:items) {
        //一般表单域
            if (item.isFormField()) {
                name=item.getFieldName();
                pcDate=item.getString();
                }
            //若是文件域则把文件保存到d盘临时文件夹
            else {
                  String fieldName=item.getFieldName();
                //上传的文件名
                  fileName=item.getName();
                //上传的文件类型
                  String contentType=item.getContentType();
                //上传的文件大小
                  long sizeInBytes=item.getSize();


        //可判断文件类型,若不符合类型要求则不保存,这里没有处理文件类型
                  InputStream in=item.getInputStream();
                  byte[] buffer=new byte[1024];
                  int len=0;
            File file=new File("d:\\test\\"+fileName);
                item.write(file);                               
            }
        }
    } catch (Exception e) {
            e.printStackTrace();
    }
*/
doPost(req,resp);
  }


@Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    req.setCharacterEncoding("UTF-8");
//获取上传的真实文件名称及地址
String filepath = req.getParameter("filepath");
System.out.println("-----上传时文件的实际地址-------"+filepath);
//获取实际上传的文件名称
String fileName =filepath.substring(filepath.lastIndexOf("\\")+1, filepath.length());
System.out.println("-----上传时文件的实际名称-------"+fileName);
//对名称进行重命名
String newName= getFileNameByNew(fileName);
System.out.println("-----重命名后的newName----"+newName);


/* WEB 发布的地址*/
String basepath=req.getSession().getServletContext().getRealPath("\\resources\\upload");
File file= new File(basepath);//设置文件上传的目标路径 
if(!file.exists()){
file.mkdir();
}
System.out.println("--------需要上传到项目的新地址--------------"+basepath);
File targetPath =new File(basepath,newName);//目标上传地址
File srcFilepath =new File(filepath);//原上传地址

FileUtils.copyFile(srcFilepath, targetPath);
}

//对上传的文件进行重命名
private  String getFileNameByNew(String fileName){
if(null!=fileName){
//获取上传的文件名的后缀名
String last=fileName.substring(fileName.lastIndexOf('.'));

SimpleDateFormat date =new SimpleDateFormat("yyyyMMddHHmmss");
return date+last;

//获得一个32位的随机序列号
/* String name=UUID.randomUUID().toString();
return name+last;*/
}
return null;

}

你可能感兴趣的:(eclipse)