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
InformationsquelleAutor Jim | 2013-11-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überprüfen diese StackOverflow-Frage. Sie hat Antworten für Web-API-1 und Web-API-2.
Dies ist, wie Sie können, speichern Sie die empfangene Datei:
InformationsquelleAutor Nikolai Samteladze