11 Stimmen

ASP.NET MVC. Wie erstellt man eine Aktionsmethode, die multipart/form-data akzeptiert?

Ich habe eine Controller-Methode, die akzeptieren muss multipart/form-data vom Client als POST-Anfrage gesendet. Die Formulardaten bestehen aus 2 Teilen. Der eine ist ein Objekt, das serialisiert ist in application/json und der andere Teil ist eine Fotodatei, die als application/octet-stream . Ich habe eine Methode auf meinem Controller wie diese:

[AcceptVerbs(HttpVerbs.Post)]
void ActionResult Photos(PostItem post)
{
}

Ich kann die Datei abrufen über Request.File hier problemlos, allerdings ist das PostItem null. Keine Ahnung warum? Irgendwelche Ideen

Controller Code:

/// <summary>
/// FeedsController
/// </summary>
public class FeedsController : FeedsBaseController
{
    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Photos(FeedItem feedItem)
    {
        //Here the feedItem is always null. However Request.Files[0] gives me the file I need  
        var processor = new ActivityFeedsProcessor();
        processor.ProcessFeed(feedItem, Request.Files[0]);

        SetResponseCode(System.Net.HttpStatusCode.OK);
        return new EmptyResult();
    }

}

Die Client-Anfrage auf der Leitung sieht wie folgt aus:

{User Agent stuff}
Content-Type: multipart/form-data; boundary=8cdb3c15d07d36a

--8cdb3c15d07d36a
Content-Disposition: form-data; name="feedItem"
Content-Type: text/xml

{"UserId":1234567,"GroupId":123456,"PostType":"photos",
    "PublishTo":"store","CreatedTime":"2011-03-19 03:22:39Z"}

--8cdb3c15d07d36a
Content-Disposition: file; filename="testFile.txt"
ContentType: application/octet-stream

{bytes here. Removed for brevity}
--8cdb3c15d07d36a--

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X