SpringMVC 上传下载
来源:互联网 发布:垃圾发电厂危害 知乎 编辑:程序博客网 时间:2024/06/05 05:31
下面介绍一下SpringMVC对文件的上传和下载,
注意:上传文件和下载文件不能使用Ajax请求,必须是form表单提交
上传
springMVC配置文件的配置:
<!-- 上传文件解释器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="104857600" /> <property name="maxInMemorySize" value="4096" /> <property name="defaultEncoding" value="UTF-8"></property></bean>
Java后台
- contorller层:
/** * 上传文件 * @param file * @param request * @param session * @return */ @RequestMapping("upLoadFile") @ResponseBody public ResponseEntity upLoadFile(@RequestParam("addUploadFile") CommonsMultipartFile file,HttpServletRequest request,HttpSession session){ Date date=new Date(); SimpleDateFormat sdfTime=new SimpleDateFormat("yyyy-MM-DD HH:mm:ss"); try{ List<Resource> resourceList=resourceService.findByResourceName(request.getParameter("addResourceName")); if(resourceList.size()!=0){//判断用户名是否存在 return ResponseEntity.status(ResponseVoConstant.BADREQUEST). data(null).errorMessage(MessageUtil.getMessageValue("PROJECT_NAME_ALREADY_EXIST")); } String path="/PMS_Resource/"+request.getParameter("addProjectId");//文件保存路径 File newfile=new File(path,file.getOriginalFilename()); if (!newfile.exists()) { //判断文件的路径是否存在 newfile.mkdirs(); //如果文件不存在 在目录中创建文件夹 这里要注意mkdir()和mkdirs()的区别 } file.transferTo(newfile); Resource resource=new Resource(); resource.setResourceName(request.getParameter("addResourceName"));//资源名 resource.setResourceAddress(newfile.getPath()); resource.setPorjectId(Integer.parseInt(request.getParameter("addProjectId")));//项目ID resource.setUploadUserId(Integer.parseInt(session.getAttribute("userId").toString())); resource.setUploadTime(sdfTime.parse(sdfTime.format(date))); resource.setResourceBrief(request.getParameter("addResourceBrief"));//资源简介 resourceService.save(resource);//保存资源信息 }catch (Exception e) { return ResponseEntity.status(ResponseVoConstant.BADREQUEST). data(null).errorMessage(MessageUtil.getMessageValue("SAVE_FAIL")); } return ResponseEntity.status(ResponseVoConstant.OK). data(null).errorMessage(MessageUtil.getMessageValue("UPLOAD_SUCCESS")); }
此时文件就保存到这个路径下:
String path="/PMS_Resource/"+request.getParameter("addProjectId");//文件保存路径
前台界面代码
- HTML:
<form id="addResourceForm" method="post" class="form-horizontal"> <div class="form-group"> <label for="constantTypeName" class="col-sm-3 control-label">所属项目编号</label> <select class="form-control" id="addProjectId" name="addProjectId"> </select> <!-- <div class="col-sm-9"> <input type="text" class="form-control" id="addProjectId" name="addProjectId" readonly> </div> --> </div> <div class="form-group"> <label for="constantTypeName" class="col-sm-3 control-label">资源名称</label> <div class="col-sm-9"> <input type="text" class="form-control" id="addResourceName" name="addResourceName"> </div> </div> <div class="form-group"> <label for="constantTypeName" class="col-sm-3 control-label">资源上传</label> <div class="col-sm-9"> <input type="file" class="form-control" id="addUploadFile" name="addUploadFile" onchange="checkResourceSize(this)"> </div> </div> <div class="form-group"> <label for="constantTypeName" class="col-sm-3 control-label">资源简介</label> <div class="col-sm-9"> <textarea class="form-control" id="addResourceBrief" name="addResourceBrief"></textarea> </div> </div> <div class="form-group"> <div class="col-sm-4 col-sm-offset-8" style="text-align: right"> <button type="button" id="saveResourceBtn" class="btn btn-primary" onclick="addResource()">保存</button> <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button> </div> </div> <div id="modalResourceTip"></div> </form>
- js代码:
function addResource() { if($('#addResourceName').val()==''){ $("#modalResourceTip").append("<div id=\"resourceAlert\" class=\"alert alert-danger\"><a href=\"#\" class=\"close\" data-dismiss=\"alert\">×</a>资源名不能为空</div>"); setTimeout(function(){ $("#resourceAlert").remove() },2000); return false; } if( $('#addUploadFile').val().trim() ==""){ $("#modalResourceTip").append("<div id=\"resourceAlert\" class=\"alert alert-danger\"><a href=\"#\" class=\"close\" data-dismiss=\"alert\">×</a>请选择上传需要上传的资料</div>"); setTimeout(function(){ $("#resourceAlert").remove() },2000); return false; } if( $('#addResourceBrief').val().trim() ==""){ $("#modalResourceTip").append("<div id=\"resourceAlert\" class=\"alert alert-danger\"><a href=\"#\" class=\"close\" data-dismiss=\"alert\">×</a>请填写资源简介</div>"); setTimeout(function(){ $("#resourceAlert").remove() },2000); return false; } $("#addResourceForm").ajaxSubmit({ url: "../../resource/upLoadFile", type: "post", enctype: 'multipart/form-data', // iframe: true, dataType:'json', success: function (data) { if(data.status=="2000"){ $("#addResourceModal").modal('hide');//显示form模态框 getData(1, 10);//重新加载数据 }else{ $("#modalResourceTip").append("<div id=\"resourceAlert\" class=\"alert alert-danger\"><a href=\"#\" class=\"close\" data-dismiss=\"alert\">×</a>上传资源失败了,"+data.errorMessage+"</div>"); setTimeout(function(){ $("#resourceAlert").remove(); },2000); } }, error: function (data) { $("#modalResourceTip").append("<div id=\"resourceAlert\" class=\"alert alert-danger\"><a href=\"#\" class=\"close\" data-dismiss=\"alert\">×</a>上传资源失败了,服务器出现了问题,请稍后重试</div>"); setTimeout(function(){ $("#resourceAlert").remove(); },2000); } })}/*** 检查文件大小* @param ele* @returns*/function checkResourceSize(ele){if((ele.files[0].size / 1024/1024).toFixed(2)>30){ $("#saveResourceBtn").attr("disabled","disabled"); $("#modalResourceTip").append("<div id=\"resourceAlert\" class=\"alert alert-danger\"><a href=\"#\" class=\"close\" data-dismiss=\"alert\">×</a>上传文件的大小不能超过30M</div>"); return false; }else{ $("#saveResourceBtn").removeAttr("disabled");//将按钮可用 setTimeout(function(){ $("#resourceAlert").remove() },1000); }}
这样上传文件就完成了!!
演示图片:
就上传到指定的路径下了
下载
Java后台:
/** * 下载 * @param request * @param response * @return * @throws Exception */ @RequestMapping("downLoad") @ResponseBody public ResponseEntity downLoad(HttpServletRequest request,HttpServletResponse response) throws Exception{ FileInputStream fis =null; BufferedInputStream bis =null; try { //通过资源ID获取实体类 Resource retResource=resourceService.findResourceById(Integer.parseInt(request.getParameter("resourceId"))); File file = new File(retResource.getResourceAddress()); String path=retResource.getResourceAddress();//获取文件路径 String fileName=path.substring(path.lastIndexOf("\\")+1);//截取文件名 if(file.exists()) { response.setContentType("application/octet-stream"); response.addHeader("Content-Disposition","attachment;filename="+new String(fileName.getBytes("utf-8"),"iso-8859-1")); response.setHeader("Content-Length", String.valueOf(file.length())); byte[] buffer = new byte[1024]; fis = new FileInputStream(file); bis = new BufferedInputStream(fis); OutputStream os =response.getOutputStream(); int i =bis.read(buffer); while (i!=-1) { os.write(buffer, 0, i); i=bis.read(buffer); } } else{ return ResponseEntity.status(ResponseVoConstant.BADREQUEST). data(null).errorMessage(MessageUtil.getMessageValue("DOWNLOAD_FIAL")); } } catch (Exception e) { return ResponseEntity.status(ResponseVoConstant.BADREQUEST). data(null).errorMessage(MessageUtil.getMessageValue("DOWNLOAD_FIAL")); }finally { bis.close(); fis.close(); } return ResponseEntity.status(ResponseVoConstant.OK). data(null).errorMessage(MessageUtil.getMessageValue("DOWNLOAD_SUCCESS")); } /** * 通过资源ID检查文件是否存在 * @param resource * @param request * @return * @throws Exception */ @RequestMapping("checkFileByResourceId") @ResponseBody public ResponseEntity checkFileByResourceId(@RequestBody Resource resource,HttpServletRequest request) throws Exception{ Resource retResource=resourceService.findResourceById(resource.getResourceId()); File file = new File(retResource.getResourceAddress()); if(file.exists()){//判断文件是否存在 return ResponseEntity.status(ResponseVoConstant.OK). data(null).errorMessage(MessageUtil.getMessageValue("FILE_EXIST")); } else { return ResponseEntity.status(ResponseVoConstant.BADREQUEST). data(null).errorMessage(MessageUtil.getMessageValue("FILE_NO_EXIST")); } }
前台代码
- HTML
<form id="updateResourceForm" method="post" class="form-horizontal"> <div id="downloadResourceTip"></div> <div class="form-group"> <div class="col-sm-4 col-sm-offset-8" style="text-align: right"> <button type="button" id="downloadResourceBtn" class="btn btn-primary" onclick="">下载</button> <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button> </div> </div> </form>
- js代码
/*** 下载资源* @param resourceId* @returns*/function downloadResource(resourceId) { $("#downloadForm").remove();//移除之前下载时产生的form,防止冗余 var form=$("<form id='downloadForm'>");//定义一个form表单 form.attr("style","display:none"); form.attr("target",""); form.attr("method","post"); form.attr("action","../../resource/downLoad"); var inputResourceId=$("<input>"); inputResourceId.attr("type","text"); inputResourceId.attr("name","resourceId"); inputResourceId.attr("value",resourceId); $("body").append(form);//将表单放置在web中 form.append(inputResourceId); form.submit();//表单提交 }//确认资源能否下载function checkResourceStatus(resourceId) { $("#downloadResourceAlert").remove(); $("#downloadResourceBtn").removeAttr("disabled");//将按钮可用 $("#downloadResourceBtn").removeAttr("onclick");//移除下载事件 $.ajax({ url : '../../resource/checkFileByResourceId', type: "POST", contentType:'application/json', data : JSON.stringify({ "resourceId":resourceId }), success : function(result) { if(result.status=="2000"){ $("#downloadResourceTip").append("<div id=\"downloadResourceAlert\" class=\"alert alert-success\"><a href=\"#\" class=\"close\" data-dismiss=\"alert\">×</a>资源正常,可以正常下载</div>"); $("#downloadResourceBtn").attr("onclick","downloadResource("+resourceId+")"); }else{ $("#downloadResourceTip").append("<div id=\"downloadResourceAlert\" class=\"alert alert-danger\"><a href=\"#\" class=\"close\" data-dismiss=\"alert\">×</a>"+result.errorMessage+"</div>"); $("#downloadResourceBtn").attr("disabled","disabled"); } }, error : function() { $("#downloadResourceTip").append("<div id=\"downloadResourceAlert\" class=\"alert alert-danger\"><a href=\"#\" class=\"close\" data-dismiss=\"alert\">×</a>服务器出现了问题,暂时无法下载,请稍后重试</div>"); $("#downloadResourceBtn").attr("disabled","disabled"); } });
这样下载就完成了,可以把刚刚上传的文件下载下来:
演示
阅读全文
0 0
- springMVC上传下载
- SpringMVC上传下载.
- SpringMVC上传下载
- springMvc上传下载
- springmvc上传下载
- SpringMVC上传下载
- springmvc上传下载
- SpringMVC上传下载
- SpringMVC 上传下载
- springMVC上传下载
- SpringMVC中文件上传下载
- Springmvc上传下载附件
- springmvc文件上传下载
- springmvc文件上传下载
- SpringMVC 文件上传下载
- springmvc文件上传下载
- SpringMVC 上传下载(1)
- springmvc实现文件上传下载
- 微服务架构
- 第五章 ReentrantLock源码解析1--获得非公平锁与公平锁lock()
- spring cloud stream kafka 动态写入不同的topic(Using dynamically bound destinations)
- XGBoost中参数调优的完整指南(含Python-3.X代码)
- 百度人工智能
- SpringMVC 上传下载
- 技术复杂性导致企业成本增加
- H5音频 视频 播放控件 及其属性用法
- sql server 2008r2 for windows 2008r2异机远程备份
- [Linux]fdisk分区相关/Virtualbox为centos添加新硬盘/LVM逻辑卷管理
- WebSocket 前后端DEMO(java)
- spring整合hibernate
- Flask构建微电影视频网站
- python OS模块