Wie übergibt man ein pdf aus WebAPI und Lesen Sie die pdf-Datei aus dem MVC Controller?

Ich habe eine Web-API-service, der zurückkehren sollte, eine PDF-Datei.

Ich bin dann versucht zu rufen, dass WebAPI-Methode zum Lesen der PDF-Datei.

Hier ist meine API-Methode:

    [HttpPost]
    [Route("GetTestPDF")]
    public HttpResponseMessage TestPDF()
    {
        HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
        response.Content = new StreamContent(new FileStream(@"C:\MyPath\MyFile.pdf", FileMode.Open, FileAccess.Read));
        response.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
        response.Content.Headers.ContentDisposition.FileName = "MyFile.pdf";
        response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/pdf");

        return Request.CreateResponse(HttpStatusCode.OK, response);
    }

Allerdings, wenn ich gehen, um die Antwort Lesen, ich sehe nicht den pdf-Inhalt. Ich bin mir nicht sicher, wohin ich gehe falsch mit diesem.

Controller-Methode:

public ActionResult GetPDF()
        {
            var response = new HttpResponseMessage();

            using (HttpClient httpClient = new HttpClient())
            {
                httpClient.BaseAddress = new Uri(@"my local host");                               
                response = httpClient.PostAsync(@"api/job/GetTestPDF", new StringContent(string.Empty)).Result;
            }

            var whatisThis = response.Content.ReadAsStringAsync().Result;
            return new FileContentResult(Convert.FromBase64String(response.Content.ReadAsStringAsync().Result), "application/pdf");
        }

Wenn ich untersuchen whatisThis variable sehe ich den content-type und die content-dispostion richtig eingestellt, aus meiner API. Allerdings sehe ich nicht den Inhalt des PDF-Dokuments.

Wie kann ich Lesen Sie die PDF-Inhalte?

EDIT:

Wenn ich lese, der Inhalt wird als Zeichenfolge in mein MVC-Website, die ich sehe. (Ich sehe nicht den tatsächlichen Inhalt der Datei)

{"Version":{"_Major":1,"_Minor":1,"_Build":-1,"_Revision":-1},"Content":{"Headers":[{"Key":"Content-Disposition","Value":["attachment; filename=MyFile.pdf"]},{"Key":"Content-Type","Value":["application/pdf"]}]},"StatusCode":200,"ReasonPhrase":"OK","Headers":[],"RequestMessage":null,"IsSuccessStatusCode":true}

Ich trat durch die WebAPI und es ist erfolgreich Lesen und einstellen der Antwort.Inhalt mit dem Inhalt der Datei.

Immer noch nicht sicher, ob dies ein Problem auf der WebAPI-Seite oder die MVC-Seite.

  • Wenn du deine API-Methode httpget und rufen Sie es von einem browser unterstützt die pdf-Datei öffnen oder herunterladen, wie erwartet, und die Arbeit als pdf?
  • Der Konstruktor für FileContentResult scheint ein byte-array, und Sie können die Antwort Lesen, die Inhalte als solche, also vielleicht anstatt zu Lesen, wie eine Zeichenfolge, die Sie tun könnten: return new FileContentResult(response.Content.ReadAsByteArrayAsync().Result, "application/pdf");
  • Hmm. Ich alles sehen, aber den eigentlichen Inhalt des Dokuments. Ich habe das vorgeschlagen, geändert und bekam eine Fehlermeldung-Dokument beginnt nicht mit %pdf
  • Auch versucht, die änderung der API zu bekommen. Ich habe das gleiche Problem.
  • Können Sie das GET-endpoint von einem browser? Es tut Anzeige/ download richtig dann?
  • Es wird nicht angezeigt, entweder

InformationsquelleAutor John Doe | 2017-04-04
Schreibe einen Kommentar