es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

ASP.NET Web API 4 finalización inesperada del flujo multipart stream de MIME.

Tengo un antiguo proyecto de Angular 2-rc4 que se ejecuta en asp.net web api 4, estoy tratando de implementar la carga de archivos y tengo un problema al enviar un archivo desde el frontend.

Recibo el error “unexpected end of mime multipart stream”.

Esto solo ocurre en el proyecto del cliente, si envío una solicitud desde Postman, el archivo se carga correctamente. ¿Algún idea de lo que podría estar causando esto?

Lo que he intentado hasta ahora:

Leí que debemos agregar un CRLF al final del flujo, así que implementé esto, pero aún no se solucionó el problema.

“` Código
Stream reqStream = Request.Content.ReadAsStreamAsync().Result;
reqStream.Position = 0;
MemoryStream tempStream = new MemoryStream();
reqStream.CopyTo(tempStream);

tempStream.Seek(0, SeekOrigin.End);
StreamWriter writer = new StreamWriter(tempStream);
writer.WriteLine();
writer.Flush();
tempStream.Position = 0;

StreamContent streamContent = new StreamContent(tempStream);
foreach (var header in Request.Content.Headers)
{
streamContent.Headers.Add(header.Key, header.Value);
}

<pre><code><br />Aquí está el código del frontend que envía la solicitud:

</code></pre>

let body = JSON.stringify(jobFilesUpload);

const fileHeaders = new Headers();
fileHeaders.append('Accept', '<em>/</em>');
fileHeaders.append('Access-Control-Allow-Origin', '*');
fileHeaders.append('Content-Type', 'multipart/form-data; boundary=—-WebKitFormBoundary7MA4YWxkTrZu0gW');

this.authHttp.post(this.authService.apiUrl + "api/upload" + jobFilesUpload.OBPJobId, body, { headers: fileHeaders }).subscribe(hacer más cosas aquí)
“`

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema podría ser causado por la forma en que se está enviando el archivo desde el código del front-end. Parece que el código del front-end está utilizando el módulo Http de Angular para enviar la solicitud, pero es posible que no esté formateando correctamente la solicitud para una carga de formulario multipart. El código del backend parece estar correcto, ya que funciona cuando se utiliza Postman.

    Una cosa que puedes intentar es utilizar una biblioteca diferente para la carga de archivos en Angular, como la biblioteca Angular File Upload. Esta biblioteca maneja la carga de formularios multipart por ti y debería funcionar con el backend ASP.NET Web API.

    Otra cosa que debes verificar es la cadena de límite utilizada en el encabezado Content-Type. Este valor debe coincidir con el valor de límite utilizado en el cuerpo de la solicitud. Es posible que el valor de límite no se esté estableciendo correctamente en el código del front-end, lo que causa que falle el código del backend.

    En general, la carga de archivos puede ser un proceso complicado con muchos pasos involucrados, por lo que puede requerir un poco de prueba y error para que funcione correctamente.

Comments are closed.