webwork 多图片上传
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://maomao.blog.51cto.com/115985/58501 |
近期用webwork做项目,有上传文件操作,在此记录一下,有部分内容来自网络,javascript脚本只支持IE,不支持firefox。 一、FileUploadAction.java
文件;
package ebizserve.cpd.view.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.log4j.Logger;
import ebizserve.util.FileUtil;
public class FileUploadAction extends BaseAction {
private Logger logger = Logger.getLogger(FileUploadAction.class);
private static final long serialVersionUID = 5943699833329252614L;
// 对应<input type=file name=fileImages />中的file控件name名称;
private File[] fileImages;
// 获取 文件名称为 fileImages 的 file 控件上传文件的文件名称;
private String[] fileImagesFileName;
// 默认调用方法
public String execute() {
File[] newFileImages = FileUtil.renameToFiles(fileImagesFileName,
fileImages);
if (newFileImages != null && newFileImages.length > 0) {
for (File file : newFileImages) {
try {
if (!FileUtil.verifyFile(file, new String[] { "jpg", "gif",
"jpeg", "png" })) {
this.addFieldError("errorimage",
"Error:Invalid
File Type");
return "create";
}
} catch (Exception e) {
e.printStackTrace();
}
}
for (File fileImage : newFileImages) {
try {
FileInputStream fileIn;
int filesize = 0;
String imageName = fileImage.getName();
fileIn = new FileInputStream(fileImage);
filesize = fileIn.available();
logger.info("获得文件名称: " + imageName);
logger.info("获得文件大小:" + filesize);
FileUtil.saveFile(fileImage, imageName,
getProductFilePath());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return SUCCESS;
}
// 对应的 getXXX()/setXXX()方法;
public File[] getFileImages() {
return fileImages;
}
public void setFileImages(File[] fileImages) {
this.fileImages = fileImages;
}
public String[] getFileImagesFileName() {
return fileImagesFileName;
}
public void setFileImagesFileName(String[] fileImagesFileName) {
this.fileImagesFileName = fileImagesFileName;
}
}
二、BaseAction.java
文件;
package ebizserve.cpd.view.action;
import java.io.File;
import com.opensymphony.xwork.ActionSupport;
public class BaseAction extends ActionSupport {
private static final long serialVersionUID = -2796680436059696842L;
private static final String FILE_PATH = "d:/upload/"; // 文件realpath;
public String getProductFilePath() {
File filesPath = new File(FILE_PATH);
if (!filesPath.exists()) { // (canRead()
filesPath.mkdirs(); // mkdirs()
}
return FILE_PATH;
}
}
三、FileUtil.java
文件;
package ebizserve.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class FileUtil {
// 重命名文件;
public static File[] renameToFiles(String[] fileNames, File[] files) {
File[] retFiles = null;
if (fileNames != null && fileNames.length > 0) {
retFiles = new File[fileNames.length];
for (int i = 0, n = fileNames.length; i < n; i++) {
File dist = new File(fileNames[i]);
files[i].renameTo(dist);
retFiles[i] = dist;
}
}
return retFiles;
}
// save文件;
public static long saveFile(File file, String fileName, String filePath)
throws Exception {
if (file == null) {
return 0;
}
File filepath = new File(filePath);
if (!filepath.isDirectory())
filepath.mkdirs();
File filedesc = new File(filepath, fileName);
return copyFile(file, filedesc);
}
// copy文件;
public static long copyFile(File fromFile, File toFile) {
long len = 0;
InputStream in = null;
OutputStream out = null;
try {
in = new FileInputStream(fromFile);
out = new FileOutputStream(toFile);
byte[] t = new byte[1024];
int ii = 0;
while ((ii = in.read(t)) > 0) {
out.write(t, 0, ii);
len += ii;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (out != null) {
try {
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return len;
}
// 验证文件正确性;
public static boolean verifyFile(File file, String[] exts) throws Exception {
boolean flag = false;
if (file != null) {
String ext = getExtension(file.getName());
if (ext == null) {
return false;
}
if (exts != null && exts.length > 0) {
if (exts[0].equals("*.*"))
return true;
for (int i = 0; i < exts.length; i++) {
if (ext.equalsIgnoreCase(exts[i])) {
flag = true;
break;
}
}
}
}
return flag;
}
// 取得文件扩展名;
public static String getExtension(String fileName) {
int newEnd = fileName.length();
int i = fileName.lastIndexOf('.', newEnd);
if (i != -1) {
return fileName.substring(i + 1, newEnd);
} else {
return null;
}
}
}
|


