import org.springframework.http.codec.multipart.FilePart;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;
import java.io.File;
@RestController
public class TestController {
@PostMapping("test")
public Mono<R> test(FilePart file){
String fileName = file.filename();
File newFile = new File("F:/images/banner/",fileName);
file.transferTo(newFile);
return Mono.just(R.ok());
}
}
我上传图片并使用transferTo方法将文件写入目标路径。 但我在 F:/images/banner/ 中找不到图片 有人可以帮助我吗?谢谢
最佳答案
在编写响应式(Reactive)代码时,您必须确保它终止,或者换句话说,您需要订阅发布者。 file.transferTo()
返回 Mono<Void>
如果您不订阅,实际上不会执行任何操作。
根据您的情况,您可以执行以下操作,请使用 then
返回结果的方法。
@PostMapping("test")
public Mono<R> test(FilePart file){
String fileName = file.filename();
File newFile = new File("F:/images/banner/",fileName);
return file.transferTo(newFile)
.then(Mono.just(R.ok()));
}
现在您返回调用链,客户端将订阅,事情将开始发生。您还可以添加额外的 onError
当传输中出现问题时,调用以返回错误响应。
关于Spring WebFlux FilePart TransferTo 方法无法将文件写入目标路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73810669/