Mit MVC ApiController zu erhalten hochgeladene Datei per WebClient.UploadFile

Ich versuche zu schaffen, am POST-Methode in mein MVC ApiController zu erhalten und den Namen gesendete Datei per WebClient.UploadFile. Ich suchte für eine Weile jetzt, und haben nicht gefunden, einen kompletten Proben dieser ApiController. Ich habe festgestellt viele, die den gleichen Request-Objekt verwendet das MVC-Controller. Diese verwenden alle den Wunsch.Files-Auflistung, um die Datei-stream. Aber die gleiche Eigenschaft ist, die nicht auf das Request-Objekt verfügbar gemacht, von ApiController.

Den folgenden code-Schnipsel von meinen beiden client-side console-Anwendung und der server-Seite mit MVC ApiController.

Den client-code:

private void executePost(string url, string filename, params KeyValuePair<string, string>[] parms)
{
    WebClient client = new WebClient();
    parms.ToList().ForEach(k => client.QueryString.Add(k.Key, k.Value));
    client.UploadFile(url, "POST", filename);
}

Und die pseudo-server-Seite ApiController Methode:

public async Task<HttpResponseMessage> UploadFile(string p1, string p2, string p3)
{
    if (Request.Content.IsMimeMultipartContent())
    {
        var provider = new MultipartFileStreamProvider("/myroot/files");
        await Request.Content.ReadAsMultipartAsync(provider)
            .ContinueWith(r =>
            {
                if (r.IsFaulted || r.IsCanceled)
                    throw new HttpResponseException(HttpStatusCode.InternalServerError);
            });
        return Request.CreateResponse(HttpStatusCode.OK);
    }
}

Wie gehe ich über die Benennung der Datei, die geschrieben werden.

Dank,
Jim

sind Sie das hochladen einer einzelnen Datei? gibt es in Ihrem client-code senden einer mehrteiligen Anforderung?

InformationsquelleAutor Jim | 2013-11-23

Schreibe einen Kommentar