我可以在不使用@Async的情况下将multipartFile.getInputStream()与扫描仪一起使用,但是当我使用multipartFile.getInputStream()流获取文件时,它显示的文件路径不正确(使用@Async)。
MultipartFileReader:文件studentId.txt没有有效内容!
错误
java.nio.file.NoSuchFileException
@Component
@Slf4j
public class MultipartFileReader {
public List<String> read(MultipartFile multipartFile) throws IOException {
List<String> readLineList = new ArrayList<>();
try {
Scanner myReader = new Scanner(multipartFile.getInputStream());
StudentService.java
@Async
public void workStudent(StudentData studentData) throws IOException {
...
List<Long> studentIdList = multipartFileReader.read(studentData.getstudentIdFile()).stream()
.map(Long::parseLong).toList();
我假设您正在异步处理本地文件,因为您的程序启动新线程并尝试设置输入流。
要修复此问题,您可以将文件上传到本地存储(f.e.)并从中读取它,或者将文件读入字节数组,然后将字节数组传递给异步方法。