先讲讲大致流程:
1、前台通过文件选择框选择文件提交后,通过action跳转到后端;
大致代码:
//前台的代码先不去深究,毕竟水平精力有限;只指出关键的几个数据如:groupid,fileFileName,file,uploadType,clientkey等,其中涉及到上传人的身份,所在位置,上传文件类型,文件名,文件实体;
$(".addBTN").click(function(){
Added('新增文件','AddApp.jsp',function(){
var groupid = <%=session.getAttribute(Context.GROUPID)%>;//群组id
var fileFileName = $(window.frames["AddedName"].document).find(".fileFileName").val();//文件名
var file = $(window.frames["AddedName"].document).find(".file").val();//文件路径
var uploadType = $(window.frames["AddedName"].document).find(".uploadType").val();//文件类型
var clientkey=<%=session.getAttribute("clientkey")%>;
insertfile(groupid,fileFileName,file,uploadType);
});
});
function insertfile(groupid,fileFileName,file,uploadType) {
//alert("上传");
var optionss = {
url : "<%=basePath%>/actions/uploadShareFile.action",
data:{"groupid":groupid,"file":file,"uploadType":uploadType},
type : "post",
dataType : "json",
success : function(data) {
alert("上传成功");
/* if (data.result) {
parent.toast(data.message);
location=location;
} else {
parent.toast(data.message);
} */
},
error : function(data) {
parent.toast('提示', "系统连接超时!");
return;
}
}
windialog=$(window.frames["AddedName"].document).find(".jvForms").ajaxSubmit(optionss);
return;
}
2、后端的action方法对提交的数据进行处理
private class UploadShareFile extends DefaultActionSupport{
private String fileFileName;// 文件名
private String groupid;// 组ID
private String uploadType;// 上传文件类型
private File file;
......一系列get和set
@Override
public String execute() {
// 生成一个文件Id
String fid = UUID.randomUUID().toString();
ShareFilesResult result = new ShareFilesResult();
// 生成文件目录
File base = FileHelper.getGlobalFileBase("groupshareCache/");
try {
String path = new File(base, fid).toPath().toString();
System.out.println(path);
FileHelper.copyFile(file, new File(base, fid), false);
} catch (IOException e) {
log.log(Level.WARNING, "上传群组文件异常", e);
try {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
} catch (IOException e1) {
}
return null;
}
ShareFile sf = new ShareFile();
sf.setCreateTime(System.currentTimeMillis());
switch (uploadType) {
case 0:
System.out.println("临时文件");
sf.setDeadlineTime(0);
break;
case 1:
System.out.println("永久文件");
sf.setDeadlineTime(0);
break;
default:
System.out.println("临时文件");
sf.setDeadlineTime(0);
break;
}
sf.setDownTimes(0);
sf.setFid(fid);
sf.setFileName(fileFileName);
sf.setFileSize(file.length());
//测试数据--组名
sf.setGroupid("xw");
//测试数据--人名
sf.setUploader("xw");
sf.setUploaderName("xw");
sf.setPfid(pfid);
GroupShareDB.addShareFile(sf);
result.setMessage("上传成功!");
result.setResult(true);
JsonUtil.responseOutWithJson(response, result);
return null;
}
}
工具类FileHelper中的getGlobalFileBase
public static File getGlobalFileBase(String child)
{
File base = new File(GLOBALFILE, child);
if(!base.exists())
base.mkdirs();
return base;
}
OK,上传工作大致已经完成,由于刚进公司,部分数据还无法得知来源,暂且如此吧!