📄 fileuploadaction.java
字号:
package com.retech.fileupload.action;
import java.io.File;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random; //使用了Commons-IO组件包
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class FileUploadAction extends ActionSupport {
// 封装上传文件的属性
private File doc;
// 封装上传文件名称属性
private String fileName;
// 封装上传文件类型属性
private String contentType;
// 保存文件路径属性
private String dir;
// 保存文件名称属性
private String targetFileName;
public void setDoc(File file) {
this.doc = file;
}
public void setDocFileName(String fileName) {
this.fileName = fileName;
}
public void setDocContentType(String contentType) {
this.contentType = contentType;
}
public String execute() throws Exception {
// 获得upload路径的实际目录
String realPath = ServletActionContext.getRequest().getRealPath(
"/upload");
String targetDirectory = realPath;
// 生成保存文件的文件名称
targetFileName = generateFileName(fileName);
// 保存文件的路径
setDir(targetDirectory + "\\" + targetFileName);
// 建立一个目标文件
File target = new File(targetDirectory, targetFileName);
// 将临时文件复制到目标文件
FileUtils.copyFile(doc, target);
return SUCCESS;
}
// 为上传文件自动分配文件名称,避免重复
private String generateFileName(String fileName) {
// 获得当前时间
DateFormat format = new SimpleDateFormat("yyMMddHHmmss");
// 转换为字符串
String formatDate = format.format(new Date());
// 随机生成文件编号
int random = new Random().nextInt(10000);
// 获得文件后缀名称
int position = fileName.lastIndexOf(".");
String extension = fileName.substring(position);
// 组成一个新的文件名称
return formatDate + random + extension;
}
public String getDir() {
return dir;
}
public void setDir(String dir) {
this.dir = dir;
}
public String getContentType() {
return contentType;
}
public void setContentType(String contentType) {
this.contentType = contentType;
}
public String getTargetFileName() {
return targetFileName;
}
public void setTargetFileName(String targetFileName) {
this.targetFileName = targetFileName;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -