刚写的上传处理方式,想从代码,效率上分析代码的质量。
参考资料:1.http://www.blogjava.net/lishunli/archive/2010/01/07/308614.html
ACTION部分:
private File upload;
private String uploadFileName;
...
//如果在上传新文件
if(upload != null) {
FileUploadUtils fUtil = new FileUploadUtils();
String path = fUtil.upload(upload, uploadFileName, "/uploadFiles/imperson/");
if(null != path) {
this.entity.setPhoto(path);
}
}
JSP 部分:
<input name="upload" type="file"/>
<s:if test="photo!=null">
<span id="zp"><img src="${basePath }/${photo}"/><a href="javascript:deleteFile('zp',photo);">删除</a></span><BR/>
</s:if>
JS 部分:
function deleteFile(obj,inputName){
$.dialog.confirm("您确定要删除该文件吗?",function(){
$("#"+obj+"").hide();
$("input[name='"+inputName+"']").val("");
})
}
上传类:
package com.scctt.impr.util;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
/**
* Description: 文件上传,需要绑定页面文件input框name为upload,在action中绑定File upload和String
* uploadFileName,如果需要调用多次则自己循环upload,并调用upload方法;
* 方法返回上传后文件中服务器存放的文件名;注意:要在自己的方法里保证上传文件不为空的时候,再去new此对象并调用方法,if(upload!=null){自己的方法内容}
* 例: //如果在上传新文件
* if(upload != null) { FileUploadUtils fUtil = new
* FileUploadUtils(); String path = fUtil.upload(upload, uploadFileName,
* "/uploadFiles/imperson/"); if(null != path) {
* this.entity.setPhoto(path); } }
*
* 如有多个文件需要上传,那么绑定的时候,请把上传的输入框的name设置好,比如第一个上传输入框的name是upload,那么对应的文件名为uploadFileName,其他同理。具体参考下例:
* private File upload; private String uploadFileName; private File upload1;
* private String upload1FileName; private File upload2; private String
* upload2FileName;
*
* @author WN
* @date 2012-8-24
* @version 1.0
*/
public class FileUploadUtils {
/**
* Description:上传方法,注意设置好folder属性,设置好后直接可以使用
* @param upload 文件
* @param uploadFileName 文件名
* @param folder 文件目录
* @return
* @author WN
* @update [日期YYYY-MM-DD] [更改人姓名][变更描述]
*/
public String upload(File upload, String uploadFileName, String folder) {
String path = null;
if(upload != null) {
String targetDirectory = ServletActionContext.getServletContext().getRealPath(folder);//
String realName = UUID.randomUUID() + uploadFileName.substring(uploadFileName.lastIndexOf("."));
File target = new File(targetDirectory, realName);
try {
FileUtils.copyFile(upload, target);
path = folder + realName;
//System.out.println("文件已上传至:"+targetDirectory);
}catch(IOException e) {
e.printStackTrace();
}
}
return path;
}
}