6 Stimmen

Herunterladen von Dateien in einem Android 3.0-Browser von meiner ASP.NET-Website

Ich habe ein Problem beim Herunterladen einer PDF-Datei von meiner benutzerdefinierten asp.net-Website im Standardbrowser auf einem Android-Tablet (einem Motorola Xoom).

Ich verwende Response.OutputStream.Write, um die Datei zu senden, weil die Datei von einem UNC-Pfad gelesen werden muss. Diese Methode funktioniert mit IE, Firefox, Safari und auf dem iPad, aber nicht mit dem Browser auf dem Xoom. Als ich jedoch Firefox auf das Xoom heruntergeladen habe, konnte ich die Datei problemlos herunterladen.

Ich habe einige Stellen gefunden, die die Verwendung der folgenden Überschriften vorschlagen: Inhalt-Typ: application/octet-stream Inhalt-Disposition: Anhang; Dateiname="MeinDateiname.PDF"

Ich habe das schon versucht, aber ohne Erfolg. Ich habe auch die Content-Types application/pdf und application/force-download und jede Kombination von Dateiname groß, Erweiterung groß, Erweiterung klein, doppelte Anführungszeichen, einfache Anführungszeichen, keine Anführungszeichen usw. für Content-Disposition ausprobiert und habe noch nichts gefunden, das funktioniert.

Ich habe auch festgestellt, dass, wenn ich den Code zum Herunterladen der Datei auf Page_Load ausführen, es in der Lage ist, herunterzuladen, aber wenn ich ein Postback und dann den Code ausführen (Klicken auf einen Link-Button, um die Datei herunterzuladen) es nicht funktioniert

Hat jemand in der Lage, eine Datei mit benutzerdefinierten C#-Code auf dem OOTB Android 3.0-Browser herunterladen?

1voto

Ethan Drotning Punkte 11

Dieser Artikel ist alt, aber falls jemand auf dieses Problem stößt:

Prüfen Sie unbekannte Quellen unter Einstellungen --> Anwendungen.

Vergewissern Sie sich, dass Sie auf dem IIS-Server unter MIME-Typen (application/pdf) PDF definiert haben.

Auch wenn Sie einen File-Handler verwenden, müssen Sie die Header-Informationen einstellen.

Dieser Codeblock ist ein Beispiel dafür, was in einem File-Handler verwendet wird:

string dirpath = System.Configuration.ConfigurationManager.AppSettings["FilePath"];
string file = System.Configuration.ConfigurationManager.AppSettings["FileName"];

System.IO.FileInfo fi = new System.IO.FileInfo(dirpath + file);
string contentlen = fi.Length.ToString();

context.Response.Buffer = true;
context.Response.Clear();
context.Response.AddHeader("content-disposition", "attachment; filename=" + file);
context.Response.AddHeader("content-length", contentlen);
context.Response.ContentType = "application/pdf";

try
{
    context.Response.WriteFile(dirpath + file);
}
catch (Exception)
{
    context.Response.Redirect("Error.aspx");
}

0voto

Michael Punkte 2910

Ich habe keine Ahnung, warum das passiert, aber wenn Sie eine Datei innerhalb der Datenbank herunterladen können Page_Load Blocks, wäre ein Workaround die Verknüpfung mit einer speziellen Seite für das Herunterladen, auf der Sie die Download-Funktion innerhalb der Page_Load Block.

Um dies mit dem Rest Ihrer Website in Einklang zu bringen (falls erforderlich), können Sie der Seite verschiedene Parameter für das Herunterladen verschiedener Dateien übergeben oder nur dann auf diese Seite umleiten, wenn Sie feststellen, dass die Website auf dem Android-Browser ausgeführt wird.

Ich werde in Kürze Code-Beispiele hinzufügen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X