web-dev-qa-db-de.com

Ressource als Dokument interpretiert, jedoch mit MIME-Typ application/pdf übertragen

Siehe den folgenden Code:

Controller:

public ActionResult GetPDF()
{
    byte[] pdf = GetPdfFromDatabase();
    return new FileContentResult(reportData, "application/pdf");
}

Aussicht:

<iframe src="@Url.Action("GetPDF","Account")" width="600" height="500"></iframe>

Javascript-Konsole:

 enter image description here

Jedes Mal, wenn Sie eine Seite laden, diese Warnung anzeigen !!!

7
Matheus Miranda

Für die, die auf dieses Thema stoßen. (Ich auch.) Für die beste Lösung müssen Sie eine HTML-Seite erstellen, die als iframe-Landing-Page fungiert, um den Inhalt von PDF anzuzeigen.

Dies ist ein Beispiel für HTML. Ich extrahiere gerade aus Chrom.

<html><body style="background-color: rgb(38, 38, 38); height: 100%; width: 100%; overflow: hidden; margin: 0px;"><embed width="100%" height="100%" name="plugin" id="plugin" src="your_pdf_url" type="application/pdf"></body></html>

Ersetzen Sie einfach your_pdf_url durch Ihre echte URL. Ich füge dieses HTML einfach als Middleware in Laravel hinzu und zeige dieses HTML, sodass Chrome keine Warnung mehr gibt. Sie können diese HTML-Datei als Basis verwenden und bessere PDF-Zielseiten erstellen, z. B. benutzerdefiniertes Laden.

2
EThaizone Jo

Ein iframe fordert die im Attribut src angegebene Ressource mit dem Inhaltstyp text/html an. Diese Meldung sagt also nur "Ich habe HTML angefordert, aber der Server hat mit PDF geantwortet" 

14
Burak SARICA

Ich glaube, die Warnung kann nicht ignoriert werden.

Als Alternative zu diesem Problem habe ich das object-Tag verwendet:

<object data = "Ihre-Datenbank-64" type = "application/pdf"> </ object>

wenn Sie angleJS verwenden, gehen Sie wie folgt vor, um Fehler in der Konsole zu vermeiden:

<object ng-attr-data = "Ihre-Datenbank-64" type = "application/pdf"> </ object>

6
Márcio Rossato