Struts使用plupload实现多文件上传

plupload,一个挺不错js框架。到时其官方demo中只是提供了php服务端代码。
下面是我个人修改的,通过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;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值