springboot 上传下载

 /**
     * 实现文件上传
     * */
    @RequestMapping("fileUpload")
    @ResponseBody
    public String fileUpload(@RequestParam("fileName") MultipartFile file){
        if(file.isEmpty()){
            return "false";
        }
        String fileName = file.getOriginalFilename();
        int size = (int) file.getSize();
        System.out.println(fileName + "-->" + size);
        
        String path = "F:/test" ;
        File dest = new File(path + "/" + fileName);
        if(!dest.getParentFile().exists()){ //判断文件父目录是否存在
            dest.getParentFile().mkdir();
        }
        try {
            file.transferTo(dest); //保存文件
            return "true";
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return "false";
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return "false";
        }
    }


 /**
     * 实现多文件上传
     * */
    @RequestMapping(value="multifileUpload",method= RequestMethod.POST)
    @ApiOperation(value = "备注信息及图片上传",notes = "返回信息描述:success")
/**public @ResponseBody String multifileUpload(@RequestParam("fileName")List<MultipartFile> files) */
    public @ResponseBody String multifileUpload(RemarkInfo remarkInfo, HttpServletRequest request){
        System.out.println(System.currentTimeMillis());
        System.out.println("remarkInfo = " + remarkInfo);
        List<MultipartFile> files = ((MultipartHttpServletRequest)request).getFiles("fileName");


        String remarka = request.getParameter("remarka");
        String area = request.getParameter("area");
        System.out.println("area = " + area);
        System.out.println("remarka = " + remarka);

        if(files.isEmpty()){
            return "false";
        }

        String path = "D:/test" ;
        String urls = "";
        String rightnow = System.currentTimeMillis()+"";
        for(MultipartFile file:files){
            String fileName = file.getOriginalFilename();
            int size = (int) file.getSize();
            System.out.println(fileName + "-->" + size);
            
            if(file.isEmpty()){
                return "false";
            }else{

                String pos = path + File.separator + remarkInfo.getUserId() + File.separator + remarkInfo.getType() + File.separator + rightnow;
                File posdir = new File(pos);
                if(!posdir.exists()){ //判断文件父目录是否存在
                    posdir.mkdirs();
                }
                File dest = new File(pos + File.separator + fileName);
//                if (urls != "") {
//                    urls += ",";
//                }



                try {
                    file.transferTo(dest);
                }catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    return "false";
                } 
            }
        }
        urls += rightnow;
remarkInfo.setUrls(urls);
        RemarkInfo insert = remarkInfoService.insert(remarkInfo);
        System.out.println("insert = " + insert);
        return "true";
    }


压缩成zip下载
@RequestMapping(value="multifileDownload")
    public @ResponseBody String zipFiles(RemarkInfo remarkInfo, HttpServletResponse response) {
//        File[] srcfile, ,
//        System.out.println("id = " + id);
        String zipFileName = "pic";
        byte[] buf = new byte[1024];
        String path = "D:/test" ;
        File dest = new File(path+File.separator+remarkInfo.getUserId()+File.separator+remarkInfo.getType()+File.separator+remarkInfo.getUrls());
        File[] files = dest.listFiles();
        File[] srcfile = files;
        // 获取输出流
        BufferedOutputStream bos = null;
        try {
            bos = new BufferedOutputStream(response.getOutputStream());
        } catch (IOException e) {
            e.printStackTrace();
            return "fail";
        }
        try {
            response.reset(); // 重点突出
            // 不同类型的文件对应不同的MIME类型
            response.setContentType("application/x-msdownload");
            response.setCharacterEncoding("utf-8");
            response.setHeader("Content-disposition", "attachment;filename=" + zipFileName + ".zip");

            // ZipOutputStream类:完成文件或文件夹的压缩
            ZipOutputStream out = new ZipOutputStream(bos);
            for (int i = 0; i < srcfile.length; i++) {
                FileInputStream in = new FileInputStream(srcfile[i]);
                // 给列表中的文件单独命名
                out.putNextEntry(new ZipEntry(srcfile[i].getName()));
                int len;
                while ((len = in.read(buf)) > 0) {
                    out.write(buf, 0, len);
                }
                out.closeEntry();
                in.close();
            }
            out.close();
            bos.close();
            System.out.println("压缩完成.");
        } catch (Exception e) {
            e.printStackTrace();
            return "fail";
        }
        return "success";
    }

//下载处理中文乱码问题
 @RequestMapping(value = "/testDownload", method = RequestMethod.GET)
    @ApiOperation(value = "下载文件所有")
    public void testDownload(HttpServletResponse resp, @RequestParam String filePath, @RequestParam String fileType, @RequestParam String fileName, @RequestParam Integer size) throws IOException {
//        File file = new File("C:/test.txt");
        String fileNameEn = null;
        resp.setCharacterEncoding("utf-8");
        try {
            fileNameEn = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        resp.setHeader("content-type", "application/octet-stream");
        resp.setContentType("application/octet-stream");
        resp.setContentLength(size);
        resp.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileNameEn);
//        resp.setHeader("Content-Disposition", "attachment;filename=" + fileNameEn);
        byte[] buff = new byte[1024];
        BufferedInputStream bis = null;
        OutputStream os = null;
        try {
            os = resp.getOutputStream();
            bis = new BufferedInputStream(HdfsUtil.download(filePath));
            int i ;
            while ((i=bis.read(buff))!=-1) {
                os.write(buff, 0, i);
                //i = bis.read(buff);
            }
            os.flush();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (bis != null) {
                try {
                    bis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值