Skip to content

File Upload & Download

Upload routes receive a Map<String, Buffer> of uploaded files:

public class UploadHandler extends FileUploadRoute<UploadResponse, MyState> {
@Override
public RequestPipeline<UploadResponse> handle(HttpStream<Map<String, Buffer>, MyState> e) {
return e.complete(ctx -> {
int totalBytes = ctx.in().values().stream().mapToInt(b -> b.getBytes().length).sum();
return HttpResult.success(new UploadResponse(totalBytes));
});
}
}

Register the upload route:

routesRegister.uploadFileRoute("/upload", Method.POST, appState, new UploadHandler());

Download routes return a DownloadFileResponse:

public class DownloadHandler implements FileDownloadRoute<String, MyState> {
@Override
public RequestPipeline<DownloadFileResponse> handle(HttpStream<String, MyState> e) {
return e.complete(ctx ->
HttpResult.success(new DownloadFileResponse(Buffer.buffer("file contents"), "report.csv")));
}
}

Register the download route with a content type:

routesRegister.downloadFileRoute("/download", Method.GET, appState, new DownloadHandler(), "text/csv");