文件上传实现

来源:互联网 发布:linux内核编译 编辑:程序博客网 时间:2024/06/03 19:51

后台:

@RequestMapping(value = "/upload")public ResponseEntity<Map<String, Object>> upload(@RequestParam MultipartFile handbookFile,HttpServletRequest request, HttpServletResponse response) throws IOException {Map<String, Object> resultMap = new HashMap<String, Object>();if (!handbookFile.isEmpty()) {String uploadtype = "handbookFile";String basePath = "d:/upload/" + uploadtype + "/";String visitUrl = "/upload/" + uploadtype + "/";int type = 1;// 默认为1 pdfString originalFilename = handbookFile.getOriginalFilename();visitUrl = visitUrl  + originalFilename;String path = basePath + originalFilename;System.out.println("手册存储的路径:" + visitUrl);// 转存文件到指定的路径/*File f = new File(path);*/File f = new File(visitUrl);if (!f.exists()) {f.getParentFile().mkdirs();}handbookFile.transferTo(f);// 写入磁盘// 判断文件的类型String suffix = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);// 获取后缀if ("pdf".equals(suffix)) {type = 1;} else if ("doc".equals(suffix) || "docx".equals(suffix)) {type = 2;} else {type = 0;}resultMap.put("state", "SUCCESS");resultMap.put("url", visitUrl);resultMap.put("size", handbookFile.getSize());resultMap.put("original", originalFilename);resultMap.put("type", type);resultMap.put(PublicConstants.SUCCESS_KEY, true);}return new ResponseEntity<Map<String, Object>>(resultMap, HttpStatus.OK);}

前台:

function ajaxFileUpload2(){    //开始上传文件时显示一个图片,文件上传完成将图片隐藏    //$("#loading").ajaxStart(function(){$(this).show();}).ajaxComplete(function(){$(this).hide();});    //执行上传文件操作的函数    $.ajaxFileUpload({        //处理文件上传操作的服务器端地址(可以传参数,已亲测可用)        url:path+"/handbook/uploadHandbook",        secureuri:false,                           //是否启用安全提交,默认为false         fileElementId:'handbookFile',               //文件选择框的id属性        dataType:'JSON',                           //服务器返回的格式,可以是json或xml(需要大写)等     text        success:function(data, status){            //服务器响应成功时的处理函数                alert(data)            data = data.replace(/<pre.*?>/g, ''); // ajaxFileUpload会对服务器响应回来的text内容加上<pre style="....">text</pre>前后缀            data = data.replace("</pre>", ''); // 本例中设定上传文件完毕后,服务端会返回给前台[0`filepath]            var data = eval("("+data+")");            alert(data.success);        if (data.success) {        alert("上传成功");            } else  {                alert("上传失败!");            }                   },        error:function(data, status, e){ //服务器响应失败时的处理函数           alert("上传失败");        }    });

<input type="button" class="m_but bg_sc" value="上传" id="" onClick="ajaxFileUpload2()" />