JAVA plupload后台如何获取文件名、实例
1、前端JS代码:
<script type="text/javascript">
$(function() {
$("#uploader").pluploadQueue({
runtimes : 'html4,html5,flash',//设置运行环境,会按设置的顺序,可以选择的值有html5,gears,flash,silverlight,browserplus,html4
flash_swf_url : '<%=basePath %>/js/lib/plupload_1_5_7/plupload/js/plupload.flash.swf',// Flash环境路径设置
silverlight_xap_url : '<%=basePath %>/js/lib/plupload_1_5_7/plupload/js/plupload.silverlight.xap',//silverlight环境路径设置
url : '<%=basePath %>/UploadServlet',//上传文件路径
max_file_size : '3gb',//100b, 10kb, 10mb, 1gb
chunk_size : '1mb',//分块大小,小于这个大小的不分块
unique_names : true,//生成唯一文件名
// 如果可能的话,压缩图片大小
// resize : { width : 320, height : 240, quality : 90 },
// 指定要浏览的文件类型
filters : [ {
title : 'Image files',
extensions : 'jpg,png,3gp,mp4,tif'
}, {
title : 'files',
extensions : 'bin,txt,doc'
} ],
init : {
FileUploaded : function(up, file, info) {//文件上传完毕触发
//console.info(up);
//console.info(file);
//console.info(info);
var response = $.parseJSON(info.response);
if (response.status) {
$('#f1').append('文件路径:<input type="text" name="fileUrl" value="'+response.fileUrl+'"/></br>');
$('#f1').append('文件名称:<input type="text" name="fileName" value="'+file.name+'"/></br>');
$('#f1').append('文件类型:<select type="text" name="fileType"><option value="6">测试</option><option value="5">桩机固件下载</option><option value="1">总量黑名单</option></select></br>');
$('#f1').append('版本号:<input type="text" name="fileVersion" value="01"/></br>');
}
}
}
});
});
function submitForm(){
$('#f1').submit();
}
</script>

2、前端HTML代码:
<body>
<form id="f1" action="<%=basePath %>systemManage/saveFileMessage!saveFileMessage.action" method="post">
<table border="0" style="width: 100%;">
<tr>
<td colspan="2">
<div id="uploader" style="width: 100%">您的浏览器没有安装Flash插件,或不支持HTML5!</div>
<!--
<button onclick="$('#uploader').pluploadQueue().start();">开始上传</button>
<button onclick="$('#uploader').pluploadQueue().stop();">停止上传</button>
-->
</td>
</tr>
</table>
</form>
<br>
<a id="btn" href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-save'" onclick="submitForm()">保存</a>
</body>

3、WEB.xml 添加 SERVLT UploadServlet

4、SERLERT 后台代码:获取文件名
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FileUtils;
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
// String repositoryPath;
String uploadPath="";
private static final ResourceBundle bundle = ResourceBundle
.getBundle("config");
public UploadServlet() {
super();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
Integer chunk = null;// 分割块数
Integer chunks = null;// 总分割数
String tempFileName = null;// 临时文件吿
String fileName = "";
BufferedOutputStream outputStream = null;
if (ServletFileUpload.isMultipartContent(request)) {
try {
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(1024);
// factory.setRepository(new File(repositoryPath));// 设置临时目录
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
// upload.setSizeMax(5 * 1024 * 1024);// 设置附件朿ħ大小,超过这个大小上传会不成势
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
if (item.isFormField()) {// 是文本域
if (item.getFieldName().equals("name")) {
tempFileName = item.getString();
} else if (item.getFieldName().equals("chunk")) {
chunk = Integer.parseInt(item.getString());
// System.out.println("当前文件块:" + (chunk + 1));
} else if (item.getFieldName().equals("chunks")) {
chunks = Integer.parseInt(item.getString());
// System.out.println("文件总分块:" + chunks);
}
} else {// 如果是文件类垿
if (tempFileName != null) {
String chunkName = item.getName();
fileName = item.getName();//真实文件名
if (chunk != null) {
chunkName = chunk + "_" + tempFileName;
}
File savedFile = new File(uploadPath, chunkName);
item.write(savedFile);
}
}
}
if (chunk != null && chunk + 1 == chunks) {
outputStream = new BufferedOutputStream(
new FileOutputStream(new File(uploadPath,
fileName)));
// 遍历文件合并
for (int i = 0; i < chunks; i++) {
File tempFile = new File(uploadPath, i + "_"
+ tempFileName);
System.out.println("tempFileName:"+tempFileName);
byte[] bytes = FileUtils.readFileToByteArray(tempFile);
outputStream.write(bytes);
outputStream.flush();
tempFile.delete();
}
outputStream.flush();
}
//System.out.println("newFileName:"+newFileName);
Map<String, Object> m = new HashMap<String, Object>();
System.out.println("newFileName:"+fileName);
m.put("status", true);
m.put("fileUrl", uploadPath+ "/"
);
response.getWriter().write(JSONObject.fromObject(m).toString());
} catch (FileUploadException e) {
e.printStackTrace();
Map<String, Object> m = new HashMap<String, Object>();
m.put("status", false);
response.getWriter().write(JSONObject.fromObject(m).toString());
} catch (Exception e) {
e.printStackTrace();
Map<String, Object> m = new HashMap<String, Object>();
m.put("status", false);
response.getWriter().write(JSONObject.fromObject(m).toString());
} finally {
try {
if (outputStream != null)
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@Override
public void init(ServletConfig config) throws ServletException {
GetPropertiesPam gp = new GetPropertiesPam();
uploadPath =gp.getGJPath();
File up = new File(uploadPath);
if (!up.exists()) {
up.mkdir();
}
}
}

5、获取文件信息,STRUTS 技术:
@Action(value = "saveFileMessage")
public void saveFileMessage() throws Exception {
log.info("固件保存");
request = ServletActionContext.getRequest();
response = ServletActionContext.getResponse();
String[] fileUrls = request.getParameterValues("fileUrl");
String[] fileNames = request.getParameterValues("fileName");
String[] fileTypes = request.getParameterValues("fileType");
String[] fileVersions = request.getParameterValues("fileVersion");
try {
for (int i = 0; i < fileUrls.length; i++) {
filemanage = filemanageBusiness.get("from Filemanage where filetypes="+fileTypes[i]);
String msg = "文件路径:" + fileUrls[i] + " 文件名称:" + fileNames[i]
+ "<br/>";
log.info(msg);
filemanage.setSate(0);
filemanage.setFilenames(fileNames[i]);
filemanage.setFilepaths(fileUrls[i]);
filemanage.setUpdates(new Date());
filemanage.setFileversion(Integer.parseInt(DateUtil.getFileVersion()+fileVersions[i]));
filemanage.setFileserials(filemanage.getFileserials()+1);
try {
filemanageBusiness.save(filemanage);
String resultString = "文件" + filemanage.getFilenames()
+ ",保存成功";
response.setCharacterEncoding("UTF-8");
response.getWriter().print(
"<script>alert('" + resultString + "');</script>");
response.getWriter().print(
"<script>parent.location.reload();</script>");
} catch (Exception e) {
log.error("文件上传失败"+e.getMessage());
}
}
} catch (Exception e) {
log.error("文件上传失败"+e.getMessage());
}
}

6、完成
