Java Spring批处理打开多部分文件,错误:';阅读器位于';严格的';模式';
我从html前端上传了一个批处理文件 在我的控制器中,我正在尝试处理它Java Spring批处理打开多部分文件,错误:';阅读器位于';严格的';模式';,java,spring,spring-boot,spring-batch,Java,Spring,Spring Boot,Spring Batch,我从html前端上传了一个批处理文件 在我的控制器中,我正在尝试处理它 public @ResponseBody void customerBatchUpload(@RequestParam("batchFile") MultipartFile[] batchFile) throws Exception { File fileToImport = new File(batchFile[0].getOriginalFilename()); String pathToFile =
public @ResponseBody void customerBatchUpload(@RequestParam("batchFile") MultipartFile[] batchFile) throws Exception {
File fileToImport = new File(batchFile[0].getOriginalFilename());
String pathToFile = fileToImport.getAbsolutePath();
FlatFileItemReader<Customer> reader = new FlatFileItemReader<>();
reader.setResource(new FileSystemResource(pathToFile));
reader.open(new ExecutionContext());
}
我尝试了我尝试了String pathToFile=“file://”+fileToImport.getAbsolutePath()代码>和
String pathToFile=“file:\\”+fileToImport.getAbsolutePath()代码>
两者都失败,并给出相同的上述错误。Javadoc of:
返回客户端文件系统中的原始文件名
您的服务器无法访问客户端文件系统。怎么可能呢
您需要调用或来访问上载的文件内容
在您的情况下,使用可能是最好的选择:
try (InputStream in = batchFile[0].getInputStream()) {
FlatFileItemReader<Customer> reader = new FlatFileItemReader<>();
reader.setResource(new InputStreamResource(in));
reader.open(new ExecutionContext());
// more code here
}
try(InputStream in=batchFile[0].getInputStream()){
FlatFileItemReader=新的FlatFileItemReader();
reader.setResource(新的InputStreamResource(in));
reader.open(新的ExecutionContext());
//这里有更多代码
}
如果这不起作用,并且上载的文件大小有限,则可以使用getBytes()
和
如果内存不足,或者需要处理大型文件,请使用transferTo(file)
和FileSystemResource
将上载的内容写入临时文件。记住在完成后删除临时文件。getBytes()和ByteArrayResource工作正常。非常感谢
try (InputStream in = batchFile[0].getInputStream()) {
FlatFileItemReader<Customer> reader = new FlatFileItemReader<>();
reader.setResource(new InputStreamResource(in));
reader.open(new ExecutionContext());
// more code here
}