feat(PostDocumentRequest): update to forward stream instad of whole content

This commit is contained in:
tekh 2025-08-18 14:53:20 +02:00
parent b5082daa1a
commit e8fd49d75d
2 changed files with 8 additions and 9 deletions

View File

@ -7,13 +7,13 @@ namespace Leanetec.EConnect.Client.Order;
public record PostDocumentRequest(string TenantId, int OrderId) : HttpRequest<Response<ProblemDetail>> public record PostDocumentRequest(string TenantId, int OrderId) : HttpRequest<Response<ProblemDetail>>
{ {
public UploadDocumentRequest ToUploadDocument(StreamContent content) public UploadDocumentRequest ToUploadDocument(Stream stream, string fileName)
{ {
return new UploadDocumentRequest(this, content); return new UploadDocumentRequest(this, stream, fileName);
} }
} }
public record UploadDocumentRequest(PostDocumentRequest Original, StreamContent Content) : PostDocumentRequest(Original); public record UploadDocumentRequest(PostDocumentRequest Original, Stream Stream, string FileName) : PostDocumentRequest(Original);
public class PostDocumentRequestHandler : IRequestHandler<UploadDocumentRequest, Response<ProblemDetail>> public class PostDocumentRequestHandler : IRequestHandler<UploadDocumentRequest, Response<ProblemDetail>>
{ {
@ -27,7 +27,8 @@ public class PostDocumentRequestHandler : IRequestHandler<UploadDocumentRequest,
public async Task<Response<ProblemDetail>> Handle(UploadDocumentRequest request, CancellationToken cancel) public async Task<Response<ProblemDetail>> Handle(UploadDocumentRequest request, CancellationToken cancel)
{ {
return await _client.PostAsync( return await _client.PostAsync(
request.Content, request.Stream,
request.FileName,
$"api/public/v{request.ApiVersion}/econnect/order/document", $"api/public/v{request.ApiVersion}/econnect/order/document",
new { request.TenantId, request.OrderId }, new { request.TenantId, request.OrderId },
cancel cancel

View File

@ -30,13 +30,11 @@ public class OrderController : ControllerBase
[HttpPost("document")] [HttpPost("document")]
public async Task<IActionResult> PostDocument(IFormFile file, [FromQuery] PostDocumentRequest request, CancellationToken cancel) public async Task<IActionResult> PostDocument(IFormFile file, [FromQuery] PostDocumentRequest request, CancellationToken cancel)
{ {
using var content = new MultipartFormDataContent();
using var stream = file.OpenReadStream(); using var stream = file.OpenReadStream();
using var streamContent = new StreamContent(stream);
streamContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(file.ContentType);
content.Add(streamContent, "file", file.FileName);
var res = await _mediator.Send(request.ToUploadDocument(streamContent), cancel); var uploadRequest = request.ToUploadDocument(stream, file.FileName);
var res = await _mediator.Send(uploadRequest, cancel);
return res.Ok return res.Ok
? StatusCode(res.StatusCodeInt) ? StatusCode(res.StatusCodeInt)