ajaxFileupload多文件上传
?js:
?我后台是用的struts2,strtus2的上传是比较简单的,只要声明约定的名字,即可得到文件对象,和名称,代码如下:
package com.ssy.action;import com.opensymphony.xwork2.ActionSupport;import org.apache.commons.io.FileUtils;import org.apache.struts2.util.ServletContextAware;import javax.servlet.ServletContext;import java.io.*;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Random;/** * Created with IntelliJ IDEA. * User: Administrator * Date: 13-7-2 * Time: 下午4:08 * To change this template use File | Settings | File Templates. */public class Fileupload extends ActionSupport implements ServletContextAware { private File[] gridDoc,caseDoc; private String[] gridDocFileName,caseDocFileName; private ServletContext context; public String execute(){ for (int i = 0;i<gridDocFileName.length;i++) { System.out.println(gridDocFileName[i]); } for (int i = 0;i<caseDocFileName.length;i++) { System.out.println(caseDocFileName[i]); } //System.out.println(doc1FileName); //System.out.println(doc2FileName); String targetDirectory = context.getRealPath("/uploadFile"); /* *这里我只取得 第一组的文件进行上传,第二组的类似 */ try{ for (int i = 0; i < gridDoc.length; i++) { String targetFileName = generateFileName(gridDocFileName[i]); File target = new File(targetDirectory, targetFileName); FileUtils.copyFile(gridDoc[i], target); } }catch (Exception e){ e.printStackTrace(); } return SUCCESS; } public File[] getGridDoc() { return gridDoc; } public void setGridDoc(File[] gridDoc) { this.gridDoc = gridDoc; } public File[] getCaseDoc() { return caseDoc; } public void setCaseDoc(File[] caseDoc) { this.caseDoc = caseDoc; } public String[] getGridDocFileName() { return gridDocFileName; } public void setGridDocFileName(String[] gridDocFileName) { this.gridDocFileName = gridDocFileName; } public String[] getCaseDocFileName() { return caseDocFileName; } public void setCaseDocFileName(String[] caseDocFileName) { this.caseDocFileName = caseDocFileName; } /** * 用日期和随机数格式化文件名避免冲突 * @param fileName * @return */ private String generateFileName(String fileName) { System.out.println(fileName); SimpleDateFormat sf = new SimpleDateFormat("yyMMddHHmmss"); String formatDate = sf.format(new Date()); int random = new Random().nextInt(10000); int position = fileName.lastIndexOf("."); String extension = fileName.substring(position); return formatDate + random + extension; }}?写到这里,我就有疑问了,之前的大神改的多文件,为什么还是取id,而且后台是怎么取的,我还是没怎么弄明白,我改的这个代码可行么?是不是存在bug呢?这个还有待考验,如果看出问题,请指出,共同学习
?
最后附上,我修改后的插件
1 楼 youjianbo_han_87 18 小时前 有没有bug,你运行几次不久知道吗,不过还是感谢分享出来,很多号称大牛这牛的,根本没有把实际用的代码贴出来。 2 楼 ssy341 11 小时前 youjianbo_han_87 写道有没有bug,你运行几次不久知道吗,不过还是感谢分享出来,很多号称大牛这牛的,根本没有把实际用的代码贴出来。
哈哈,还是需要纵观所有源码,这样才能万无一失……