private static String UPLOAD_ROOT = "C:\\pics\\";
public Mono<Void> checkInTest(@RequestPart("photo") Flux<FilePart> photoParts,
@RequestPart("data") CheckInParams params, Principal principal) {
return saveFileToDisk(photoParts);
}
private Mono<Void> saveFileToDisk(Flux<FilePart> parts) {
return parts
.log("createImage-files")
.flatMap(file -> {
Mono<Void> copyFile = Mono.just(Paths.get(UPLOAD_ROOT, file.filename()).toFile())
.log("createImage-picktarget")
.map(destFile -> {
try {
destFile.createNewFile();
return destFile;
} catch (IOException e) {
throw new RuntimeException(e);
}
})
.log("createImage-newfile")
.flatMap(file::transferTo)
.log("createImage-copy");
return Mono.when(copyFile)
.log("createImage-when");
})
.log("createImage-flatMap")
.then()
.log("createImage-done");
}
.map(destFile -> {
MultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
try {
map.set("multipartFile", new ByteArrayResource(FileUtils.readFileToByteArray(destFile)));
} catch (IOException ignored) {
}
map.set("fileName", "test.txt");
WebClient client = WebClient.builder().baseUrl("http://localhost:8080").build();
return client.post()
.uri("/upload")
.contentType(MediaType.MULTIPART_FORM_DATA)
.syncBody(map)
.exchange(); //todo handle errors???
}).then()
我将提到@Abhinaba Chakraborty
在https://stackoverflow.com/A/62745370/4551411中提供的解决方案
大概是这样的:
@PostMapping(value = "/images/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public Mono<ResponseEntity<Void>> uploadImages(@RequestPart("files") Flux<FilePart> fileParts) {
return fileParts
.flatMap(filePart -> {
return webClient.post()
.uri("/someOtherService")
.body(BodyInserters.fromPublisher(filePart.content(), DataBuffer.class))
.exchange()
.flatMap(clientResponse -> {
//some logging
return Mono.empty();
});
})
.collectList()
.flatMap(response -> Mono.just(ResponseEntity.accepted().build()));
}
这接受多部分表单数据,您可以附加多个图像文件并将它们上传到另一个服务。
我是Spring框架的新手,事实上,我正在学习和使用Spring Boot。最近,在我正在开发的应用程序中,我让Quartz调度器工作,现在我想让Spring集成在那里工作:FTP连接到服务器以从中写入和读取文件。 我想要的其实很简单(正如我在以前的java应用程序中所做的那样)。我计划每天在不同的时间启动两个Quartz作业:其中一个从FTP服务器读取文件,另一个将文件写入FTP服务器。 我将详
http://Socket.io允许你触发或响应自定义的事件,除了connect,message,disconnect这些事件的名字不能使用之外,你可以触发任何自定义的事件名称。 服务器端 // 注意,io(<端口号>) 将为你创建一个http服务。 var io = require('socket.io')(80); io.on('connection', function (socket)
本文向大家介绍php发送与接收流文件的方法,包括了php发送与接收流文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php发送与接收流文件的方法。分享给大家供大家参考。具体如下: sendStreamFile.php 把文件以流的形式发送 receiveStreamFile.php 接收流文件并保存到本地 sendStreamFile.php文件: receiveStreamFi
问题内容: 我正在尝试开发一个非常简单的客户端/服务器,其中客户端将文件转换为字节,将其发送到服务器,然后将字节转换回文件。 当前,程序仅创建一个空文件。我不是一个出色的Java开发人员,因此不胜感激。 这是接收客户端发送的内容的服务器部分。 这是客户端部分 问题答案: 在Java中复制流的正确方法如下: 希望我每次在论坛上发布时都能获得一美元。
我正在用Gradle构建一个演示Spring Boot应用程序,并使用Heroku托管该应用程序。我已经预装了Gradle4.8,所以我没有在项目目录中保留文件,并且应用程序在本地上运行良好,但是当我使用。以下日志显示警告: 并且生成在显示Gradle版本错误后失败: 意味着它使用默认的文件和安装2.0来部署应用程序。 现在我的问题是,如何强制Heroku部署进程使用预装的Gradle版本,而不在
问题内容: 在我的CRM在线系统中,我使用IMAP协议控制传入的邮件。现在,我正在使用phpmailer和SMTP协议发送邮件。一切都很好,但我有一件奇怪的事情。如何使用phpmailer脚本发送的邮件转到“已发送” IMAP文件夹? 问题答案: PHPMailer中现在有一个方法getSentMIMEMessage返回整个MIME字符串