文件上传与下载

@PostMapping(value = "upload")
    public AppResponse upload(@RequestParam("file") MultipartFile file,
    						@RequestParam("path") String uploadPath
     ) throws IOException {
        appService.upload(file, uploadPath);
        return AppResponse.success();
    }

	/**
     * 文件上传
     *
     * @param file       文件
     * @param uploadPath 上传的目标路径
     * @return
     */
    public static boolean upload(MultipartFile file, String uploadPath) throws IOException {

        //文件名
        String fileName = file.getOriginalFilename();

        String path = uploadPath + fileName;

        File dest = new File(path);

        //创建文件目录
        dest.getParentFile().mkdir();

        //写入到目标目录
        file.transferTo(dest);

        return true;
    }



*****************************************************************************


@GetMapping(value = "download")
    public void download(@RequestParam("id") String id) throws IOException {
        ServletRequestAttributes requestAttributes =
                (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletResponse response = requestAttributes.getResponse();
        appService.download(id, response);
    }

/**
     * 从appstore文件下载到应用管理
     *
     * @param id
     * @param res
     * @throws IOException
     */
    public void download(String id, HttpServletResponse res) throws IOException {

        //获取导出文件的信息
        AppManagement appManagement = storeDao.queryById(id);
        String packName = appManagement.getPackName();
        String pathName = appManagement.getPathName();

        // 信息解析
        String type = new MimetypesFileTypeMap().getContentType(packName);
        // 设置contenttype,即数据属于什么类型
        res.setHeader("Content-type", type);
        // 设置编码
        String downloadFileName = new String(packName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
        // 设置扩展头,当Content-Type 的类型为要下载的类型时 , 这个信息头会告诉浏览器这个文件的名字和类型。
        res.setHeader("Content-Disposition", "attachment;filename=" + downloadFileName);

        FileUtil.download(pathName, packName, res);

    }

/**
     * 文件下载
     *
     * @param sorcePath
     * @param fileName
     * @param res
     * @return
     * @throws IOException
     */
    public static void download(String sorcePath, String fileName, HttpServletResponse res) throws IOException {
        // 发送给客户端的数据
        OutputStream outputStream = res.getOutputStream();
        byte[] buff = new byte[1024];
        // 读取filename
        FileInputStream fileInputStream = new FileInputStream(new File(sorcePath + fileName));
        BufferedInputStream bis = new BufferedInputStream(fileInputStream);
        int i = bis.read(buff);
        while (i != -1) {
            outputStream.write(buff, 0, buff.length);
            outputStream.flush();
            i = bis.read(buff);
        }
//        IOUtils.copy(fileInputStream,outputStream);
        bis.close();
        fileInputStream.close();
        outputStream.close();
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值