Hochladen einer Datei MVC 4 Web API .NET 4

Ich bin mit der version von MVC, die geliefert mit Visual Studio 2012 express. (Microsoft.AspNet.Mvc.4.0.20710.0)

Ich nehme an, dies ist die RTM-version.

Habe ich gefunden, viele Beispiele online, die alle verwenden Sie diesen code:

    public Task<HttpResponseMessage> PostFormData()
    {
        //Check if the request contains multipart/form-data.
        if (!Request.Content.IsMimeMultipartContent())
        {
            throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
        }

        string root = HttpContext.Current.Server.MapPath("~/App_Data");
        var provider = new MultipartFormDataStreamProvider(root);

        //Read the form data and return an async task.
        var task = Request.Content.ReadAsMultipartAsync(provider).
            ContinueWith<HttpResponseMessage>(t =>
            {
                if (t.IsFaulted || t.IsCanceled)
                {
                    return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, t.Exception);
                }

                //This illustrates how to get the file names.
                foreach (MultipartFileData file in provider.FileData)
                {
                    Trace.WriteLine(file.Headers.ContentDisposition.FileName);
                    Trace.WriteLine("Server file path: " + file.LocalFileName);
                }
                return Request.CreateResponse(HttpStatusCode.OK);
            });

        return task;
    }

Aber dieser code endet immer in continueWith wo t.IsFaulted == true. Die Ausnahme lautet:

Unerwartetes Ende der MIME-multipart-stream. MIME-multipart-Nachricht ist nicht
abgeschlossen.

Hier ist mein client form. Nichts Lust, ich will jquery form pluging für ajax hochladen, aber ich kann nicht einmal auf diese Weise zu arbeiten.

<form name="uploadForm" method="post" enctype="multipart/form-data" action="api/upload" >
    <input type="file" />
    <input type="submit" value="Upload" />
</form>

Habe ich gelesen, dass es durch den parser erwartet /CR /LF am Ende jeder Nachricht, und das bug wurde in Juni.

Was ich nicht herausfinden, ist, wenn es wirklich fest ist, warum ist er dann nicht diese version von MVC 4? Warum haben so viele Beispiele im internet werben, dass dieser code funktioniert, wenn es nicht in dieser version von MVC 4?

  • ASP.NET Web-API ist nicht Bestandteil der ASP.NET MVC und es hat seine eigenen NuGet-Paket --> ASP.NET Web-API-4.0.20710.0. Bitte prüfen Sie, welche version Sie verwenden.
InformationsquelleAutor JayPrime2012 | 2012-10-25
Schreibe einen Kommentar