java 调用第三方接口,上传附件简单例子

 

  假设调用的第三方接口为上传.jpg,.jpeg附件,以文件流形式上传,无其它参数。

  比如第三方接口为c#开发,接口参数为:

复制代码
        /// <summary>
        /// 上传附件
        /// </summary>
        /// <param name="formCollection"></param>
        /// <returns></returns>
        [HttpPost("UploadFile")]
        [RequestSizeLimit(10_000_000)]
        [AllowAnonymous]
        public async Task<WebApiResult> UploadFile([FromForm] IFormCollection formCollection)
        {
      ...
复制代码

  实现逻辑:

  a.先构建请求URL
  b. 按第三方接口文档处理多文件上传请求参数,构建HttpHeaders,HttpEntity
  c.使用RestTemplate请求第三方接口
  d.处理返回结果

复制代码
 @PostMapping("/UploadFile")
    public String UploadFile(@RequestParam("file") MultipartFile multipartFile) throws Exception {
        try {
            String url="http://***/UploadFile";
            if( !multipartFile.getResource().exists())
                return "文件不存在";
            String[] extObjs={".jpg",".jpeg"};
            String fileName = multipartFile.getOriginalFilename();
            String ext = FileUtil.getFileExt(fileName);
            if (!Arrays.asList(extObjs).contains(ext))
                return  "文件为空或文件格式不正确!";
            MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
            param.add("file", multipartFile.getResource());

            RestTemplate request = new RestTemplate();
            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.MULTIPART_FORM_DATA);
            HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(param, headers);
            ResponseEntity<Map> response = request.postForEntity(url, requestEntity, Map.class);
            if (response.getStatusCode() != HttpStatus.OK) {
                return "返回状态码:"+ response.getStatusCode();
            }
            Map result  = response.getBody();
            return JSON.toJSONString(result);
        } catch (Exception ex) {
            return ex.getMessage() ;
        }
    }
复制代码

  运行项目,使用postman测试:

  参考:https://blog.csdn.net/smile_68/article/details/110188355

posted @   低调码农哥!  阅读(3778)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示