plupload,一个挺不错js框架。到时其官方demo中只是提供了php服务端代码。
下面是我个人修改的,通过Struts实现多文件上传。
下面是我个人修改的,通过Struts实现多文件上传。
package net.bingosoft.attach.action;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.bingosoft.attach.common.FileHelper;
import net.bingosoft.attach.service.AttachService;
import net.bingosoft.common.config.Config;
import net.bingosoft.common.struts.BaseAction;
import net.bingosoft.competition.model.VieFile;
import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class PluploadAction extends BaseAction{
static private final String RESP_SUCCESS = "{\"jsonrpc\" : \"2.0\", \"result\" : null, \"id\" : \"id\"}";
static private final String RESP_ERROR = "{\"jsonrpc\" : \"2.0\", \"error\" : {\"code\": 101, \"message\": \"Failed to open input stream.\"}, \"id\" : \"id\"}";
static private final String JSON = "application/json";
private AttachService attachService;
public void uploadFile(HttpServletRequest request, HttpServletResponse response) throws IOException{
request.setCharacterEncoding("UTF-8");
String responseString = RESP_SUCCESS;
String belongId = request.getParameter("belongId");
String belongModel = request.getParameter("belongModel");
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (isMultipart) {
ServletFileUpload upload = new ServletFileUpload();
//webroot绝对路径
String webRootPath = FileHelper.getServerWebRoot();
String context = request.getContextPath();
try {
FileItemIterator iter = upload.getItemIterator(request);
while (iter.hasNext()) {
FileItemStream item = iter.next();
// Handle a multi-part MIME encoded file.
if (!item.isFormField()) {
String filename = item.getName();
InputStream input = item.openStream();
String filePath = FileHelper.getServerREFile(filename);
FileHelper.uploadFile(input, webRootPath+filePath);
if(belongModel.equals(Config.getString("JINGZHENG_UPLOAD_FLAG"))){
VieFile vieFile = new VieFile();
vieFile.setFid(UUID.randomUUID().toString());
vieFile.setIid(belongId);
vieFile.setFilePath(context+"/"+filePath);
vieFile.setFileName(filename);
attachService.getBaseDao().save(vieFile);
}
}
}
}
catch (Exception e) {
responseString = RESP_ERROR;
e.printStackTrace();
}
}
// Not a multi-part MIME request.
else {
responseString = RESP_ERROR;
}
response.setContentType(JSON);
byte[] responseBytes = responseString.getBytes();
response.setContentLength(responseBytes.length);
ServletOutputStream output = response.getOutputStream();
output.write(responseBytes);
output.flush();
}
public AttachService getAttachService() {
return attachService;
}
public void setAttachService(AttachService attachService) {
this.attachService = attachService;
}
}