代码规则:
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); } }