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

被折叠的 条评论
为什么被折叠?



