如何调整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
相关产品推荐
相关产品推荐

