Sending files from Micronaut applications

Rmag Breaking News

Intro

In this time, I will try sending files to my Micronaut application.

[Micronaut] Receiving multipart/form-data

multipart/form-data

FileController.java


@Get(“/send”)
public String sendSample() {
File file1 = new File(“C:\Files\sample1.xlsx”);
File file2 = new File(“C:\Files\sample2.xlsx”);
MultipartBody requestBody = MultipartBody.builder()
.addPart(“file1”, file1.getName(), MediaType.MICROSOFT_EXCEL_OPEN_XML_TYPE, file1)
.addPart(“file2”, file2.getName(), MediaType.MICROSOFT_EXCEL_OPEN_XML_TYPE, file2).build();
HttpRequest<?> req = HttpRequest.POST(“http://localhost:8086/files/sample”,
requestBody).contentType(MediaType.MULTIPART_FORM_DATA);
return Mono.from(httpClient.retrieve(req)).block();
}

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

To send specific type files like spreadsheets(xlsx), I get a byte array from the file and set as the request body data.

FileController.java


@Get(“/compute”)
public Mono<ComputeResult> compute() {
File file = new File(“C:\Files\sample1.xlsx”);
byte[] fileData = Files.readAllBytes(file.toPath());
HttpRequest<?> req = HttpRequest.POST(“http://localhost:8086/compute”,
fileData)
.contentType(MediaType.MICROSOFT_EXCEL_OPEN_XML_TYPE);
return Mono.from(httpClient.retrieve(req)).map(result -> {
// Converting the JSON value into a class what is named ComputeResult.
ObjectMapper mapper = new ObjectMapper();
try {
return mapper.readValue(result, ComputeResult.class);
} catch (JsonProcessingException e) {
return null;
}
});

text/json

ComputingStatusRequest.java

package jp.masanori.dto;

import io.micronaut.serde.annotation.Serdeable;

import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;

@Serdeable
@JsonNaming(PropertyNamingStrategies.UpperCamelCaseStrategy.class)
public class ComputingStatusRequest {
public String RequestID;
}

FileController.java


@Get(“/status”)
public Mono<ComputeResult> getStatus() {
ComputingStatusRequest requestId = new ComputingStatusRequest();
requestId.RequestID = startResult.getRequestId();
ObjectMapper mapper = new ObjectMapper();
HttpRequest<?> req = HttpRequest.POST(“http://localhost:8086/status”,
mapper.writeValueAsString(requestId))
.contentType(MediaType.TEXT_JSON_TYPE);
return Mono.from(httpClient.retrieve(req)).map(result -> {
ObjectMapper mapper = new ObjectMapper();
try {
return mapper.readValue(result, ComputeResult.class);
} catch (JsonProcessingException e) {
return null;
}
});
}

Micronaut HTTP Client
【WebAPI】multipart/form-dataでファイルをアップロードする 【Java】 – 株式会社シベスピ – 従業員ブログ

Leave a Reply

Your email address will not be published. Required fields are marked *