springmvc 上传下载

直接上代码

<form id="uploadForm">
                        <input id="file" type="file" name="file">
                    </form>
                    <a href="javascript:;" onclick="upload()">确认上传</a>

  

function upload(){
            var formData = new FormData($( "#uploadForm" )[0]);
            var size = $("#file")[0].files[0].size;
            if(size>1024*1024*10){
                alert("上传的文件不能超过10MB");
                return;
            }
            var xmbh = '${model.xmbh}';
            formData.append("xmbh",xmbh);
            $.ajax({
                url: 'uploadFile' ,
                type: 'POST',
                data: formData,
                async: false,
                processData: false,
                contentType: false,
                success: function (data) {
                    var reJson = eval('(' + data.replace(/^ss*/, '' ).replace(/ss*$/, '' ) + ')');
                    var msg = reJson.msg;
                    if(msg=='success'){
                        var name = reJson.name;
                        var path = reJson.path.substr(1,reJson.path.length);
                        var size = reJson.size;
                        alert("文件上传成功,文件名:"+name+",文件大小:"+size);
                        $("#fujian").append('    <a href="'+path+'/'+name+'" target="_blank">'+name+'</a>');
                    }else{
                        alert(msg);
                    }
                }
            });
        }

  

  

/**
     * 上传文件
     *
     * @param file
     * @param request
     * @return
     * @throws IOException
     */
    @RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
    @ResponseBody
    public String uploadFile(@RequestParam("file") MultipartFile file, @RequestParam("xmbh") String xmbh, HttpServletRequest request) throws IOException {
        Map<String, String> reMap = new HashMap<>();
        if (!file.isEmpty()) {
            // 根据项目编号查询附件
            String fujian = duociduizhangService.getSqzlfjByXmbh(xmbh);
            // 上传的文件名称
            String name = file.getOriginalFilename();
            //文件大小
            String size = TmFileUtil.countFileSize(file.getSize());
            // 文件后缀
            String ext = TmFileUtil.getExtNoPoint(name);
            if(ext!=null){
                if(ext.equals("exe") || ext.equals("bat") || ext.equals("sh") || ext.equals("dat")){
                    reMap.put("msg", "该格式文件不能上传");
                    return mapper.writeValueAsString(reMap);
                }
            }
            //防文件重复提交
            if (fujian != null && fujian.contains("?")) {
                String[] arr = fujian.split("\?");
                for (String s : arr) {
                    if (s.equals(name)) {
                        reMap.put("msg", "不能上传同名文件");
                        return mapper.writeValueAsString(reMap);
                    }
                }
            } else if (fujian != null && fujian.equals(name)) {
                reMap.put("msg", "不能上传同名文件");
                return mapper.writeValueAsString(reMap);
            }
            String path = request.getSession().getServletContext().getRealPath(SysUtils.getProperty("uploadPath") + "/" + xmbh);
            // 设置需要上传到哪个目录去,绝对路径
            File parent = new File(path);
            if (!parent.exists()) parent.mkdirs();
            //存储文件
            file.transferTo(new File(parent, name));
            if (fujian == null) {
                duociduizhangService.updateSqzlfjByXmbh(name, xmbh);
            } else {
                duociduizhangService.updateSqzlfjByXmbh(fujian + "?" + name, xmbh);
            }

            reMap.put("msg", "success");
            reMap.put("name", name);
            reMap.put("path", SysUtils.getProperty("uploadPath") + "/" + xmbh);
            reMap.put("size", size);
            return mapper.writeValueAsString(reMap);
        } else {
            reMap.put("msg", "上传失败,上传的文件为空");
            return mapper.writeValueAsString(reMap);
        }
    }

  

  

/**
     * 下载文件
     *
     * @return
     * @throws IOException
     */
    @RequestMapping(value = "/upload/{xmbh}/{filename:.+}")
    public ResponseEntity<byte[]> download(@PathVariable("xmbh") String xmbh, @PathVariable("filename") String filename,HttpServletRequest request) throws IOException {
        System.out.println("xmbh = " + xmbh);
        System.out.println("filename = " + filename);
        String dfileName = new String(filename.getBytes("gb2312"), "iso8859-1");
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        headers.setContentDispositionFormData("attachment", dfileName);

        String Path = SysUtils.getProperty("uploadPath")+"/"+xmbh+"/"+filename;
        Path = request.getSession().getServletContext().getRealPath(Path);
        return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(new File(Path)), headers, HttpStatus.CREATED);
    }

  

原文地址:https://www.cnblogs.com/yanqin/p/6476371.html