Obtener flujo de archivo sin cargarlo en memoria.
¿Cómo es posible obtener el archivo que el usuario está subiendo sin cargarlo en memoria?
Esta línea hace que la memoria aumente var request = await httpContent.ReadAsMultipartAsync()
;
El cliente solo puede subir un archivo, ¿hay alguna forma de obtener la secuencia sin pasar por ReadAsMultipartAsync?
var request = await httpContent.ReadAsMultipartAsync();
var content = request.Contents.FirstOrDefault();
var stream = await content.ReadAsStreamAsync();
Solo quiero la secuencia del contenido. Si obtengo la secuencia de esta manera:
var stream = await httpContent.ReadAsStreamAsync();
Luego da un archivo que se ve así:
—————————–224143682423505141523038143258
Content-Disposition: form-data; name=”file”; filename=”test.txt”
Content-Type: text/plain
mi contenido tonto
davy.ai
Para obtener el archivo que el usuario está cargando sin cargarlo en memoria, se puede utilizar el método
ReadAsStreamAsync
en el contenido de la solicitud. Para hacer esto, primero debe leer la solicitud como multipart de manera asíncrona para obtener el contenido de la solicitud. Luego, puede obtener el contenido que necesita y llamar al métodoReadAsStreamAsync
para obtener el flujo sin cargarlo en memoria. De esta manera, se puede cargar eficientemente un archivo grande sin quedarse sin memoria.