You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整Java GET接口以接收TXT文件形式的文本输入?

调整Spring Boot接口以接收TXT文件输入

核心调整说明

原接口通过GET请求的@RequestParam接收字符串,要支持TXT文件输入,需做以下关键修改:

  • 改用POST请求:GET请求不适合文件上传(存在参数长度限制、语义不符问题),文件上传需使用multipart/form-data格式,POST是标准实现方案
  • 替换参数接收方式:使用MultipartFile接收上传的文件
  • 添加文件校验与读取逻辑:确保上传文件为TXT格式,并正确读取其中的文本内容

修改后的完整代码

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

@RestController
public class TestController {

    @PostMapping(value = "/test", consumes = "multipart/form-data")
    public ResponseEntity<String> processTxtFile(@RequestParam("file") MultipartFile file) {
        // 校验文件是否为空
        if (file.isEmpty()) {
            return new ResponseEntity<>("上传的文件不能为空", HttpStatus.BAD_REQUEST);
        }

        // 校验文件格式是否为TXT
        String fileName = file.getOriginalFilename();
        if (fileName == null || !fileName.toLowerCase().endsWith(".txt")) {
            return new ResponseEntity<>("仅支持上传TXT格式文件", HttpStatus.BAD_REQUEST);
        }

        // 读取文件文本内容
        StringBuilder content = new StringBuilder();
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(file.getInputStream(), "UTF-8"))) {
            String line;
            while ((line = reader.readLine()) != null) {
                content.append(line).append("\n");
            }
            // 移除末尾多余的换行符(可选,根据业务需求调整)
            if (content.length() > 0) {
                content.deleteCharAt(content.length() - 1);
            }
        } catch (IOException e) {
            return new ResponseEntity<>("读取文件失败:" + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
        }

        // 调用原有文本处理方法
        String modifiedText = modified(content.toString());
        return new ResponseEntity<>(modifiedText, HttpStatus.OK);
    }

    // 原有的文本修改方法
    private String modified(String text) {
        if (text == null || text.isEmpty()) {
            return "";
        }
        // 首字母大写 + 末尾加感叹号
        return text.substring(0, 1).toUpperCase() + text.substring(1) + "!";
    }
}

关键细节说明

  • consumes = "multipart/form-data":明确接口仅接收文件上传格式的请求
  • MultipartFile:Spring提供的文件上传处理类,包含文件元数据与输入流操作方法
  • 指定UTF-8编码读取:避免中文或特殊字符读取时出现乱码
  • 异常场景处理:针对空文件、非TXT文件、读取失败等情况返回明确的错误响应

内容的提问来源于stack exchange,提问作者Tijunelis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 04:15:05