Java多文件上传,下载(不同系统)

/**
 * @author admin
 * @描述
 * @创建人 admin
 * @创建时间 2022/6/8 16:24
 **/
@RestController
@RequestMapping("file")
public class FileController {
    @Value("${file.upload.windowUrl}")
    private String windowUrl;
    @Value("${file.upload.linuxUrl}")
    private String linuxUrl;

    @RequestMapping("/upload")
    public String httpUpload(@RequestParam("files") MultipartFile[] files){
        JSONObject object=new JSONObject();
        for(int i=0;i<files.length;i++){
            String fileName = files[i].getOriginalFilename();  // 文件名
            File dest = null;
            if("window".equals(checkSystem())){
                dest =new File(windowUrl + fileName);
            }
            if("linux".equals(checkSystem())){
                dest = new File(linuxUrl + fileName);
            }
            if (!dest.getParentFile().exists()) {
                dest.getParentFile().mkdirs();
            }
            try {
                files[i].transferTo(dest);
            } catch (Exception e) {
                object.put("success",2);
                object.put("result","程序错误,请从新上传");
                return object.toString();
            }
        }
        object.put("success",1);
        object.put("result","文件上传成功");
        return object.toString();
    }

    @RequestMapping("/download")
    public String fileDownLoad(HttpServletResponse response, @RequestParam("fileName") String fileName){
        File file = null;
        if("window".equals(checkSystem())){
            file =new File(windowUrl + fileName);
        }
        if("linux".equals(checkSystem())){
            file = new File(linuxUrl + fileName);
        }
        if(!file.exists()){
            return "下载文件不存在";
        }
        response.reset();
        response.setContentType("application/octet-stream");
        response.setCharacterEncoding("utf-8");
        response.setContentLength((int) file.length());
        response.setHeader("Content-Disposition", "attachment;filename=" + fileName );

        try(BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));) {
            byte[] buff = new byte[1024];
            OutputStream os  = response.getOutputStream();
            int i = 0;
            while ((i = bis.read(buff)) != -1) {
                os.write(buff, 0, i);
                os.flush();
            }
        } catch (IOException e) {
            return "下载失败";
        }
        return "下载成功";
    }

    private String checkSystem(){
        String rt="";
        String info = System.getProperty("os.name");
        if (info != null && info.toLowerCase().startsWith("window")) {
            //window系统
            rt = "window";
        }
        if (info != null && info.toLowerCase().startsWith("linux")) {
            //Linux操作系统
            rt = "linux";
        }
        return rt;
    }
}

application.yml

file:
  upload:
    windowUrl: D:TestFile/
    linuxUrl: /home/TestFile/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值