利用RestTemplate实现本地的某个文件定时上传的服务器

场景

  本地有一个文件名称不变(或者前缀不变后面拼接日期)的excel,这个excel的内容是会变的。

客户端(文件上传)

@Scheduled(cron = "0 0 8 * * ? ")
    public String uploadLocalFileToRemoteServer() {
        log.info("开始上传文件,时间为: "+CommonUtil.getDateTime());
        //自己电脑的文件目录
        //String filePath = "D:\\excel.xlsx";
        File file = new File(filePath);
        if (!file.exists() || !file.isFile()) {
            return "本地文件不存在或不是文件,请检查文件路径:" + filePath;
        }
        String Url = "文件服务地址的upload接口"; // 远程服务器的URL
        try {
            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.MULTIPART_FORM_DATA);
            FileSystemResource fileResource = new FileSystemResource(file);
            MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
            body.add("file", fileResource);
            HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers);
            RestTemplate restTemplate = new RestTemplate();
            ResponseEntity<String> response = restTemplate.exchange(Url, HttpMethod.POST, requestEntity, String.class);
            log.info("结束上传文件,时间为: "+CommonUtil.getDateTime()+"------上传成功");
            return "远程文件上传成功: " + response.getBody();
        } catch (Exception e) {
            e.printStackTrace();
            log.info("结束上传文件,时间为: "+CommonUtil.getDateTime()+"------上传失败");
            return "远程文件上传失败: " + e.getMessage();
        }
    }

服务端

private static final String UPLOAD_DIR = "E:\\"; // 远程服务器上的目录

    @PostMapping("/upload")
    public String uploadFile(@RequestParam("file") MultipartFile file) {
        if (file.isEmpty()) {
            return "请选择一个文件上传";
        }
        try {
            String fileName = file.getOriginalFilename();
            File dest = new File(UPLOAD_DIR + fileName);
            file.transferTo(dest);
            return "文件上传成功: " + fileName;
        } catch (IOException e) {
            e.printStackTrace();
            return "文件上传失败: " + e.getMessage();
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值