2017-02-08 2 views
1

Ich habe ein API-Projekt in .Net Core-Anwendung erstellt. Ich habe auch Methode erstellt, um HttpRequestMessage als Parameter zu akzeptieren. Jetzt versuche ich, meine API-Methode mit Postman mit Include-Datei als body-Parameter aufzurufen, aber meine API-Methode ruft nicht auf.Accept Zip-Datei mit Postman

Hier Code

[Route("api/[controller]")] 
public class ValuesController : Controller 
{ 
    [HttpPost] 
    public HttpResponseMessage PostFiles() 
    { 
     HttpResponseMessage result = null; 
     var httpRequest = HttpContext.Request; 

     return result; 
    }} 

Hier Postman Anforderungsdaten

POST /api/values/PostFiles HTTP/1.1 

Host: localhost: 64226 Content-Type: multipart/form-data; boundary = ---- WebKitFormBoundary7MA4YWxkTrZu0gW Cache-Control: no-cache Postbote-Token: 6adcc652-a4ab-3714-cc5e-770bd214ac7a

------ WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: Form-Daten; Name = "Daten"; filename = "" Content-Type:

------ WebKitFormBoundary7MA4YWxkTrZu0gW--

Hier ist der Screenshot von meinem api-Aufruf Postbote.

enter image description here

anfordern Körper mit Datei als Parameter

enter image description here

Gibt es etwas, dass ich fehle?

Können Sie mir bitte helfen, mit der Annahme Datei als Parameter verwendet Postman meinen Web-api zu rufen?

Antwort

3

Ich denke, es gibt ein Problem mit Ihrer Route. Versuchen Sie folgendes:

public class ValuesController : Controller 
{ 
    [Route("api/values/postfiles")] 
    [HttpPost] 
    public HttpResponseMessage PostFiles() 
    { 
     HttpResponseMessage result = null; 
     var files = Request.Form.Files; 
     return result; 
    } 
} 

Dann versuchen Sie die API bei http://localhost:yourport/api/values/postfiles erreichbar.

Ersetzen Sie "yourport" in Ihrem Port-Nr.

Sie finden die Datei im „filestream“, wenn die Datei vorhanden ist.

+0

[RoutePrefix („API“) Attribut fehlt Richtlinie oder Montage .. Wie kann ich das in .Net-Core api Projekt bekommen? Auch die 'HttpContext.Current.Request.Files' für den Namespace zu verweisen? Dank – Herin

+0

Sorry, es gibt tatsächlich keine RoutePrefixAttribute im Kern. Das Anwenden eines [Route] -Attributs auf einen Controller wirkt nun als Routenpräfix. Ich habe die Antwort bearbeitet. –

+0

Verwenden Sie auch Microsoft.AspNetCore.Http für HttpContext. –

0

Verwenden Sie in einer ASP.NET Core-Anwendung IHostingEnvironment. Dann können Sie rufen ContentRootPath und WebRootPath