上传附件【上传一个附件时】

本文详细阐述了在Java应用中如何通过JSP页面接收文件上传,并在Action类中进行文件处理的过程。包括文件的基本配置、上传逻辑实现及上传文件到指定目录的详细步骤。同时介绍了上传文件的方法,涉及文件路径、文件名处理和错误处理机制。

其中jsp页面中只需定义type=”file“,name="proReCheckFile"

在Aciton中,需要定义

priate File proReCheckFIle;

private String proReCheckFileFileName;

 

jsp页面:

 附件:<input type="file"  name="proReCheckFile" style="width:250px;"/>

Action类:

private File proReCheckFile;
private String proReCheckFileFileName;

public File getProReCheckFile() {
       return proReCheckFile;
 }
 public void setProReCheckFile(File proReCheckFile) {
       this.proReCheckFile = proReCheckFile;
 }
 public String getProReCheckFileFileName() {
  return proReCheckFileFileName;
 }
 public void setProReCheckFileFileName(String proReCheckFileFileName) {
  this.proReCheckFileFileName = proReCheckFileFileName;
 }
  

 

 逻辑代码:

     String uuid= null;
     String proReCheckFileName = "",savedProReCheckFileName = "";
     if(proReCheckFileFileName != null  && proReCheckFile!=null) {
            uuid = UUID.randomUUID().toString();
            savedProReCheckFileName = uuid + proReCheckFileFileName;
            proReCheckFileName=proReCheckFileFileName;
             //添加QA审核人以及上传前的文件名和上传后的文件名
             crObject.setProReCheckFileName(proReCheckFileName);
             crObject.setSavedproReCheckFileName(savedProReCheckFileName);
             crObject.setReChecker(reChecker);
             
UploadReCheckFileName.getFileName(proReCheckFile,proReCheckFileFileName,uuid);
   }

 

 

其中 UploadReCheckFileName中的方法是


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class UploadReCheckFileName {
     private final static Log log = LogFactory.getLog("UploadReCheckFileName");
     private final static String FILE_UPLOAD_DIR;
     static{
           FILE_UPLOAD_DIR = System.getProperty("BASERESOURCEPATH") + "upload/proReCheckFile/";
      } 


     //获取savedProReCheckFileName)
     public static void getFileName(File attachments, String proReCheckFileName,String uuid){
                String savedProReCheckFileName = null;
                if(proReCheckFileName != null  && attachments!=null) {

                               savedProReCheckFileName = uuid + proReCheckFileName;
                               if(attachments != null){
                                  uploadReCheckFile(attachments,proReCheckFileName,  avedProReCheckFileName);
                                }
                     }
    }
 
 
    //TODO(上传文件)
    public static void uploadReCheckFile(File attachments,String proReCheckFileName,   String savedProReCheckFileName){ 
      if( proReCheckFileName == null || savedProReCheckFileName == null){
               log.error("上传文件失败,出现空指针.");
               return;
       }
       File uploadFile = new File(FILE_UPLOAD_DIR, savedProReCheckFileName);//指定要操作的文件
       InputStream is = null;
       OutputStream os = null;
      try {
                  //判断此文件上一级文件夹是否存在
                  if(!uploadFile.getParentFile().exists()){
                        uploadFile.getParentFile().mkdirs();//文件夹如果如果不存在,则自动创建多层目录
                        uploadFile.createNewFile();//创建文件
                }
              int len;
              byte[] buffer = new byte[1024];
               is = new FileInputStream(attachments);
               os = new FileOutputStream(uploadFile);
               while ((len = is.read(buffer)) != -1) {
                      os.write(buffer, 0, len);
                }
     } catch (Exception e) {
         log.error("当上传文件[proReCheckFileName: " + proReCheckFileName + "]时发生异常!", e);
         throw new RuntimeException(e);
    } finally {
        try {
              if (is != null) is.close();
              if (os != null) os.close();
         } catch (Exception e) {
              log.error("当关闭[proReCheckFileName: " + proReCheckFileName + "文件流时发生异常!", e);
              throw new RuntimeException(e);
         }
          log.info("上传完成![proReCheckFileName: " +

           proReCheckFileName + ", savedProReCheckFileName: " + savedProReCheckFileName + "]");
    }
   }
}

     

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值