struts1中有关form的问题 想请教个问题 struts 在上传多个文件的时候 form 得到页面所有的FormFile的同时 在form里能不能有自己的方法吧这些流丢到一个list里面呢 ? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 原理上讲,你可以把所有代码都写到一个servlet中!这是可行的,但是不实用。 多个文件是可以上传 但是我是想省去我在Action里一个个获取formfile的代码 在form里就直接把所有的file 放在list里 然后后台直接遍历 String[] saveimage = new String[4]; FormFile image1 = (FormFile) voteForm.get("image1"); FormFile image2 = (FormFile) voteForm.get("image2"); FormFile image3 = (FormFile) voteForm.get("image3"); FormFile image4 = (FormFile) voteForm.get("image4"); FormFile[] formFiles = new FormFile[4]; formFiles[0] = image1; formFiles[1] = image2; formFiles[2] = image3; formFiles[3] = image4; String filePath = request.getSession().getServletContext() .getRealPath("/") + "vote/upload";// 上传文件保存的目录for (int i = 0; i < formFiles.length; i++) { String fileName = formFiles[i].getFileName(); if (fileName == null || fileName.equals("")) { continue; } if (!UploadUtil.checkFileType(formFiles[i].getFileName())) { Script.sendMessage(response, GameScript.getAlert( "上傳文件格式必需為.jpg或者.gif!!!", "/vote/register.jsp")); return; } if (!UploadUtil.checkFileSize(formFiles[i].getFileSize())) { Script.sendMessage(response, GameScript.getAlert( "上傳文件大小不能大於1024*1024!!!", "/vote/register.jsp")); return; }String newFileName = ""; int index = fileName.lastIndexOf("."); if (index > 0) { newFileName = gameUser.getUsername() + "_" + i + System.currentTimeMillis() + fileName.substring(index, fileName.length()); // Thread.sleep(300); } String realPath = filePath + "/" + newFileName; // System.out.println("====realPath===" + realPath); saveimage[i] = realPath;// 保存没有提交的数据库中的图片路径 UploadUtil.saveToFile(realPath, formFiles[i].getFileData());// 保存图片} public class UploadUtil { private static final int MAX_SIZE = 1024 * 1024; private static final String[] TYPES = { ".jpg", ".gif", ".png" }; public static boolean checkFileSize(int size) { if (size > MAX_SIZE) { return false; } return true; } public static boolean checkFileType(String fileName) { for (int i = 0; i < TYPES.length; i++) { if (fileName.toLowerCase().endsWith(TYPES[i])) { return true; } } return false; } public static void saveToFile(String fileName, byte[] fileData) throws FileNotFoundException, IOException { OutputStream o = new FileOutputStream(fileName); o.write(fileData); o.close(); } public static void main(String[] args) { System.out.println("返回值: "+checkFileType("01464_chongyangbridgetw_1920x1200.jpg")); }} 还是写两个form吧 一个上传文件 一个传参数 MultipartRequestHandler multipartRequestHandler = form.getMultipartRequestHandler(); // 取得所有上传文件的对象集合 Hashtable elements = multipartRequestHandler.getFileElements(); // 循环遍历每一个文件 Collection values = elements.values(); for (java.util.Iterator i = values.iterator(); i.hasNext();) { file = (org.apache.struts.upload.FormFile) i.next();// 取得上传的文件 if (file != null && file.getFileSize() > 0) { // 防止文件重名的更名策略 // 获得文件后缀 String type = file.getFileName().substring( file.getFileName().lastIndexOf("."), file.getFileName().length()); num++; newName = "accusePic" + "_"+ numTime + "_"+num+type;// 保存的文件名 filePath = path + "/pictureFile/accusePic/" + newName; // 新增保存路径 SaveFile.saveFile(file, filePath); sb.append(newName+","); } } 呵呵 感谢各位了 我原本的想法就是省去在ACTION 一个一个获取file与filename form既然是个类 那就能实现我写的接口里定义的方法 在form里实现的时候 方法体即 实现一个list(MAP) 的封装 key=filename value= file(IO流) 那样后台直接获取LIST 判断遍历 可以省去很多机械的代码。 itext怎么生成目录的页码? struts 显示中文问题 ArrayList 的问题? head first 电子书查询 急求!!!!时间比较问题,分值可以再加!! 100分,求一个简单的 validator 例子! 紧急求救:在websphere 成功部署.ear 文件后,为什么简单的 jsp不好使 JAVA WEB 缓存问题 自学spring第一个程序就有问题求解,本人小白,欢迎大神讲解! 关于小说实现下一章阅读 一个增加记录的操作 如何使用JAXB管理XML文件
FormFile image1 = (FormFile) voteForm.get("image1");
FormFile image2 = (FormFile) voteForm.get("image2");
FormFile image3 = (FormFile) voteForm.get("image3");
FormFile image4 = (FormFile) voteForm.get("image4"); FormFile[] formFiles = new FormFile[4];
formFiles[0] = image1;
formFiles[1] = image2;
formFiles[2] = image3;
formFiles[3] = image4;
String filePath = request.getSession().getServletContext()
.getRealPath("/")
+ "vote/upload";// 上传文件保存的目录
for (int i = 0; i < formFiles.length; i++) {
String fileName = formFiles[i].getFileName();
if (fileName == null || fileName.equals("")) {
continue;
} if (!UploadUtil.checkFileType(formFiles[i].getFileName())) {
Script.sendMessage(response, GameScript.getAlert(
"上傳文件格式必需為.jpg或者.gif!!!", "/vote/register.jsp"));
return;
} if (!UploadUtil.checkFileSize(formFiles[i].getFileSize())) {
Script.sendMessage(response, GameScript.getAlert(
"上傳文件大小不能大於1024*1024!!!", "/vote/register.jsp"));
return;
}String newFileName = "";
int index = fileName.lastIndexOf(".");
if (index > 0) {
newFileName = gameUser.getUsername() + "_" + i
+ System.currentTimeMillis()
+ fileName.substring(index, fileName.length());
// Thread.sleep(300);
}
String realPath = filePath + "/" + newFileName;
// System.out.println("====realPath===" + realPath);
saveimage[i] = realPath;// 保存没有提交的数据库中的图片路径
UploadUtil.saveToFile(realPath, formFiles[i].getFileData());// 保存图片
} public class UploadUtil {
private static final int MAX_SIZE = 1024 * 1024;
private static final String[] TYPES = { ".jpg", ".gif", ".png" }; public static boolean checkFileSize(int size) {
if (size > MAX_SIZE) {
return false;
}
return true;
} public static boolean checkFileType(String fileName) {
for (int i = 0; i < TYPES.length; i++) {
if (fileName.toLowerCase().endsWith(TYPES[i])) {
return true;
}
}
return false;
} public static void saveToFile(String fileName, byte[] fileData)
throws FileNotFoundException, IOException {
OutputStream o = new FileOutputStream(fileName);
o.write(fileData);
o.close();
}
public static void main(String[] args) {
System.out.println("返回值: "+checkFileType("01464_chongyangbridgetw_1920x1200.jpg"));
}
}
MultipartRequestHandler multipartRequestHandler = form.getMultipartRequestHandler(); // 取得所有上传文件的对象集合
Hashtable elements = multipartRequestHandler.getFileElements(); // 循环遍历每一个文件
Collection values = elements.values();
for (java.util.Iterator i = values.iterator(); i.hasNext();)
{
file = (org.apache.struts.upload.FormFile) i.next();// 取得上传的文件
if (file != null && file.getFileSize() > 0) {
// 防止文件重名的更名策略
// 获得文件后缀
String type = file.getFileName().substring(
file.getFileName().lastIndexOf("."),
file.getFileName().length());
num++;
newName = "accusePic" + "_"+ numTime + "_"+num+type;// 保存的文件名
filePath = path + "/pictureFile/accusePic/" + newName; // 新增保存路径
SaveFile.saveFile(file, filePath);
sb.append(newName+",");
}
}