jeecg v2.0 实现上传功能
代码规则:
1、保证action为很薄的一层,接收数据、传递数据,根据service的结果对前端进行结果反馈;
2、service层,能处理的异常进行处理,处理不了的不进行try cathch,直接往上层抛出,通过日志记录异常信息;
1、页面效果如下图所示:
2、jsp代码如下所示:
<div class="easyui-panel" title="信息" style="width:400px">
<div style="padding:10px 0 10px 60px">
<form id="uploadForm" method="post" enctype="multipart/form-data" action="demoAction!upload.action">
<table>
<tr>
<td>文件路径</td>
<td><input name="filedata" class="easyui-validatebox"
required="true" type="file" missingMessage="请选择上传文件" /></td>
</tr>
</table>
</form>
</div>
<div style="text-align:center;padding:5px">
<a href="javascript:void(0)" class="easyui-linkbutton" onclick="submitForm()">提交</a>
<a href="javascript:void(0)" class="easyui-linkbutton" onclick="clearForm()">重置</a>
</div>
</div>
3、js代码如下所示:
function submitForm(){ //提交Form var myForm = $('#uploadForm').form({ url : 'demoAction!upload.action', success : function(data) { var json = $.parseJSON(data); if (json && json.success) { window.parent.window.messageshow('成功',json.msg); } else { window.parent.window.messageshow('失败','操作失败!'); } } }); if($('#uploadForm').form('validate')){ myForm.submit(); } } function clearForm(){ $('#uploadForm')[0].reset(); }
4、action层实现如下:
// ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
// ×××××××××××××××××××××××××××文件上传×××××××××××××××××××××××
// ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
//进入上传页面
public String uploadInput(){
return "upload-input";
}
//-----------------------上传文件---------------------------
//浏览器传递过来的信息
private File filedata;
public File getFiledata() {
return filedata;
}
public void setFiledata(File filedata) {
this.filedata = filedata;
}
//上传文件
public void upload(){
Json j = new Json();
try {
demoService.upload(filedata);
j.setSuccess(true);
j.setMsg("文件上传成功!");
} catch (Exception e) {
j.setMsg("文件上传失败!");
logger.error(ExceptionUtil.getExceptionMessage(e));
}
writeJson(j);
}
5、service层实现如下:
public void upload(File filedata) throws IOException {
String destDir = "d:/upload";
MultiPartRequestWrapper mpRequest = (MultiPartRequestWrapper)ServletActionContext.getRequest();
File[] files = mpRequest.getFiles("filedata");
String[] fileNames = mpRequest.getFileNames("filedata");
for(int i=0;i<files.length;i++){
File destFile = new File(destDir+"/"+fileNames[i]);
FileUtils.copyFile(files[i], destFile);
}
}