我希望能够将文件发送到下面的 api,而无需实际创建文件
@PostMapping(value = "/receiveFile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<String> receiveFile(@RequestParam("file") MultipartFile file
){
}
使用 Spring Integration -
我有以下 JDBC 入站通道适配器
<int-jdbc:inbound-channel-adapter id="jdbcInbound"
channel="inputChannel"
data-source="dataSource"
query="SELECT * FROM Products"
row-mapper="productRowMapper">
<int:poller fixed-delay="3600" time-units="SECONDS"/>
</int-jdbc:inbound-channel-adapter>
channel "inputChannel" 做处理,为下面的每个产品生成一行字符串形式
public class Product{
String type;
int price;
String technology;
// getters and setters
}
Product p = new Product();
p.setType("ABC");
p.setPrice(10000);
p.setTechnology("X");
Message message = new GenericMessage(p.toString());
// Above message obj looks like as -> GenericMessage[payload=ABC 10000 X] and each message there is a header "fileName"
这些消息被发送到聚合器。行根据此聚合器中的文件名进行分组。它的输出是 file-outbound-channel-adapter,它将文件写出到磁盘
不是在磁盘上创建一个文件并将这一行写入它,而是可以创建一个文件对象(但不是在磁盘上创建一个文件)并将此数据发送到上面的 API?
另一个挑战是,数据将在一天内轮询,在特定时间,我需要将创建的所有行发送到 API,例如在上午 8 点到晚上 8 点之间可能会生成 10,000 个这样的行。我有一个休息 API,调用时应该将所有这些行发送到 API,但作为文件。
你不需要创建一个文件对象,你不能没有一个真正的操作系统处理程序。您需要创建一个
MultiValueMap
作为密钥的有效负载,这实际上是一个文件名和您的内容作为一个值。然后 FormHttpMessageConverter
的 RestTemplate
将完成将此类请求传输到服务的技巧。
我相信同样适用于您的散装货物。