Java 文件上传同时携带参数

本文介绍如何在Java Spring Boot应用中实现文件上传的同时携带额外参数。通过使用MultipartHttpServletRequest,可以将文件和参数以键值对的形式一并传递到控制器。示例接口和Postman请求方式显示了参数以form-data格式发送。
摘要由CSDN通过智能技术生成

文件上传同时携带参数

单独进行文件上传的方式常用MultipartFile,但并不能携带其它参数:

使用MultipartHttpServletRequest可将文件、参数以键值形式包装起来,传送至controller。

例:

接口:

@RequestMapping(value = "/createTicket", method = RequestMethod.POST)
@ApiOperation(value = "新建工单", notes = "新建工单")
@ResponseBody
public CommonResultBO createTicket(MultipartHttpServletRequest request) {
   
    log.info("createTicket begin.");
    try {
   
        TicketInfo ticketInfo = getTicketInfo(request);
        ticketInfo.setStatus("已派发");
        return ticketInfoService.insertTicket(ticketInfo);
    } catch (Exception exc) {
   
        exc.printStackTrace();
        log.error(
  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
java后端调用第三方接口并携带文件参数的解决方案是使用MultipartFile来携带文件参数。您可以使用以下步骤来实现: 1. 导入所需的依赖项,包括spring-boot-starter-web和spring-boot-starter-websocket。 2. 在您的Controller类中创建一个POST请求的处理方法。在该方法中,将MultipartFile参数添加到方法的参数列表中,以接收文件。 3. 使用RestTemplate或者HttpClient等HTTP客户端库创建一个HTTP请求。 4. 将文件转换为字节数组,并将其添加到请求体中。确保您设置正确的Content-Type头部。 5. 如果需要,您还可以添加其他请求参数,例如token。 6. 发送请求并获取响应。 以下是一个简单的示例代码片段,演示了如何使用MultipartFile发送文件参数的POST请求: ```java @PostMapping("/upload") public String uploadFile(@RequestParam("file") MultipartFile file, @RequestParam("token") String token) { RestTemplate restTemplate = new RestTemplate(); String url = "https://api.example.com/upload"; // 将文件转换为字节数组,并设置Content-Type头部 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); byte[] fileBytes; try { fileBytes = file.getBytes(); } catch (IOException e) { // 处理文件读取错误 return "文件读取错误"; } // 创建请求体 HttpEntity<byte[]> requestEntity = new HttpEntity<>(fileBytes, headers); // 添加其他请求参数,例如token MultiValueMap<String, String> requestBody = new LinkedMultiValueMap<>(); requestBody.add("token", token); // 发送请求 ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class, requestBody); // 处理响应 if (response.getStatusCode() == HttpStatus.OK) { return "文件上传成功"; } else { return "文件上传失败"; } } ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值