ersten Frage aus, so lassen Sie mich wissen, wenn ich es falsch mache ...C# mvc pdf-Download auf Android Chrom hier
Mein C# MVC5 App können Anwender PDF-Dateien herunterladen. Es funktioniert gut, außer auf meinem Android-Handy. Ich benutze Chrome und lasse das Betriebssystem mit dem PDF umgehen. Es sieht so aus, als würde der Google Drive-App-Build im PDF-Viewer verwendet.
Wenn ich einen direkten Link zu der Datei verwenden, funktioniert es gut, aber wenn ich es über eine Controller-Aktion herunterladen, scheitert es mit "Datei ist ungültiges Format". Ich habe es zu einem Testfall für diese Frage vereinfacht.
Also hier ist meine Aktionsmethode:
public ActionResult IndirectTestFile()
{
string filename = "document.pdf";
var disposition = new System.Net.Mime.ContentDisposition("inline") { FileName = filename };
Response.AppendHeader("Content-Disposition", disposition.ToString());
string serverFilename = Server.MapPath("~/files/direct/" + filename);
return File(serverFilename, "application/pdf");
}
und mein HTML:
//This fails:
<a href="/report/indirectTestFile">Indirect link to file</a>
//This works:
<a href="/Files/direct/Document.pdf">Direct link to file</a>
Ich verwende Windows (Desktop) Chrome die Header für diese Anfrage zu bekommen.
Hier ist die Antwort-Header für den direkten Link:
HTTP/1.1 200 OK
Content-Type: application/pdf
Last-Modified: Thu, 07 Jul 2016 11:46:47 GMT
Accept-Ranges: bytes
ETag: "b8a3dd3d45d8d11:0"
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
Date: Thu, 07 Jul 2016 12:33:05 GMT
Content-Length: 51793
Und die Antwort-Header für Link auf die Aktion MVC:
HTTP/1.1 200 OK
Cache-Control: private, s-maxage=0
Content-Type: application/pdf
Server: Microsoft-IIS/10.0
Content-Disposition: inline; filename=document.pdf
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Thu, 07 Jul 2016 12:34:09 GMT
Content-Length: 51793
Ich sehe es große Unterschiede nicht, aber man ist zuverlässig funktioniert, und der andere versagt zuverlässig.
ist es kein korrupter Download. Wenn ich das "schlechte" PDF auf Windows herunterlade und es auf das Android-Handy kopiere, ist der gleiche Betrachter froh, es zu zeigen!
Wer sieht das schon mal? Danke für jede Hilfe.
Ich habe das gleiche genaue Problem. Werden Sie ein Update veröffentlichen, wenn Sie etwas finden? Ich werde weiter forschen. – Danation
Es sieht also so aus, als ob dies vom Content-Disposition-Header verursacht wird. Ich habe verschiedene Dinge ausprobiert, um es zum Laufen zu bringen, aber ich hatte nicht viel Glück. Wenn Sie nicht versuchen, es inline zu erstellen, wird es von Chrome heruntergeladen. – Danation
Der einzige Unterschied, den ich mit Content-Disposition gesehen habe, war, dass Sie Chrom als Download angeben, um es herunterzuladen, damit es heruntergeladen wird. – EamonnM