现在的位置: 首页 > 综合 > 正文

java文件上传方法

2018年06月30日 ⁄ 综合 ⁄ 共 2394字 ⁄ 字号 评论关闭

文件上传方法(一次上传一个文件,多个文件的话,请写循环调用)

Upload.uploadFile(theFile, filePath)
说明:
theFile:类型是FormFile
filePath:action中路径获取方法    this.getServlet().getServletContext().getRealPath("/")
调用此方法返回文件上传后的路径名

上传多个文件时,请设置每个文件之间1秒的延迟,否则文件会被覆盖

 

package common.com;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.lang.RandomStringUtils;
import org.apache.struts.upload.FormFile;

/**
 * @author lsc
 * 文件上传
 */
public class Upload {

 /**
  * 文件上传
  * @param theFile(FormFile)
  * @param filePath(action中路径获取方法:this.getServlet().getServletContext().getRealPath("/") )
  * @return
  */
 public static String uploadFile(FormFile theFile , String filePath) {
  String fileName = theFile.getFileName();//取得上传的Msds文件名
  try{
         String hardPath = "";
            /*
             * 取当前系统路径D:/Tomcat5/webapps/coka/ 其中coka 为当前context
             */
            //String filePath = this.getServlet().getServletContext().getRealPath("/");
            File savePath = new File(filePath + "UploadFiles//");
           if (!savePath.exists()) {
            savePath.mkdir();
           }
           if(!"".equals(fileName)){
            InputStream stream = theFile.getInputStream();//把文件读入
            // 取得一个5位随机字母数字字符串  
            String randStr = RandomStringUtils.random(5, true, true);
            //ByteArrayOutputStream baos = new ByteArrayOutputStream();
            /*
             * 建立一个上传文件的输出流 如果是linux系统请把UploadFiles后的"//"换成"/"
             */
            hardPath = filePath + "UploadFiles//"+ date() + "!@" + randStr+fileName.substring(fileName.indexOf("."));
            //msdsHardPath = filePath + "UploadFiles//"+ date() + "!@" + theFile.getFileName();
            OutputStream bos = new FileOutputStream(hardPath);
            //D:/Tomcat5/webapps/coka/UploadFiles/DSC01508.JPG

            //request.setAttribute("fileName",filePath + "/"
            //+ theFile.getFileName());
            int bytesRead = 0;
            byte[] buffer = new byte[8192];
            while ((bytesRead = stream.read(buffer, 0, 8192)) != -1)
            {
                bos.write(buffer, 0, bytesRead);//将文件写入服务器
            }
            bos.close();
            stream.close();
           }
           return hardPath;
        }
        catch (Exception e)
        {
            System.err.print(e);
            return "failure";
        }
 }

 /**
  * 获取时间
  * @return
  */
 private static String date(){
  Date now=new Date();
  SimpleDateFormat df=new SimpleDateFormat("yyyyMMddhhmmss");
  return df.format(now);
 }

}

抱歉!评论已关闭.