我需要从应用程序调用以下外部API。我的应用程序生成一个文件
@PostMapping(value = "/uploadFile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file
){
}
创建文件后,从我的应用程序调用上述REST API。API是将文件上传到外部存储器。在我的例子中,我创建了一个文件,然后将它作为参数传递给API。在我的应用程序端,我不想创建文件。但是当API接受一个文件时,我的理解是我需要发送一个文件对象,这个文件对象不能在没有文件系统的情况下创建。
public void createFile(){
// logic here creates file in C:/sample.txt
uploadFile();
}
public void uploadFile (){
String filePath = "C:/sample.txt";
FileSystemResource fileSystemResource = new FileSystemResource(new File(filePath));
MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
body.add("file", fileSystemResource);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(body, headers);
ResposeEntity<String> result=restTemplate.postForEntity("url", request,String.class)
}
从你题目中的问题:可以运行< code>new java.io.File(...)来接收文件的实例。这个文件不需要存在于文件系统中。这就是为什么你可以检查它是否存在()。
但是,我怀疑将其传递给API是否足够。API 很可能会尝试访问文件的内容,因此在运行时会抛出 FileNotFoundException。