Android-browser/webview bug? Content-Disposition: attachment; filename="xyz.txt"
So einen android-browser oder webview funktioniert Prima mit urls wie folgt - abc.com/xyz.txt
Allerdings, wenn Sie Ihre URL sieht dann so aus - abc.com/xyz.php und was an den browser gesendet und in dem Header ist Content-Disposition: attachment; filename="xyz.txt", dann ist der Android-Browser und web-Ansicht scheint ganz schrecklich verwirrt.
Wie es aussieht, speichert es die richtigen Datei-Namen auf dem Telefon, aber der Inhalt ist gefüllt mit der Webseite, wurde bisher nicht betrachtet. Das klappt perfekt, auch auf PC-basierten Browsern und auch auf iPhone und Blackberry, es ist nur ein problem auf der Android 2.1 und 2.2 (noch nicht getestet, andere).
Jemand eine Lösung? Werde sehr dankbar sein. Ich wirklich nicht möchten, starten Sie die Speicherung von statischen Dateien und generieren wollen mein download-Inhalte on the fly. Das Protokoll auf dem Handy hat, ergab keine Hinweise.
Hier ist, was gesendet, die vom server an den browser
===================== start content ====================================
HTTP/1.1 200 OK
Date: Thu, 21 Oct 2010 21:22:11 GMT
Server: Apache
Content-Disposition: attachment; filename="Wafty.txt"
Content-length: 30
Content-Type: text/plain; charset=ISO-8859-1
Hello this is a test of a file
========= There was no carriage return at the end of the above line ====
- Generieren Sie Ihren download-Inhalte on the fly, speichern in einer temp-Datei, und geben eine 301-Weiterleitung, um es. Bereinigen Sie die generierten Inhalten, die über einen cron-job/geplanten task. Dies kann umständlich sein, -- es ist nur ein Gedanke.
- Es verletzt meine Gefühle! 🙂
- Versuchen Sie, ändern, Content-Type
application/octet-stream
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
verwenden
nicht verwenden
Ich habe ein ähnliches problem, zu verkaufen. Die Frage ist hier, wie WebView Anlagen behandelt (eine echte Schmerzen in den Arsch). Wenn der WebView eine Website besucht, dass an einem gewissen Punkt gibt eine Anlage, es sagt ein bisschen wie "Oh Mist, was kann ich tun mit dieser nicht-HTML-Dingens?... Ey du! DownloadListener! etwas tun mit dieser URL, die sagt einige Unsinn über eine Anlage". So, die DownloadListener übernimmt und hier ist das problem: es Anfragen wieder die gleiche URL zum herunterladen der Anlage, also zum herunterladen einer Anlage beim Besuch einer Seite, die WebView aber 2 Wünsche: die Seite selbst und dann noch einen um den Anhang herunterzuladen, anstatt einfach herunterladen.
Und wie ist das ein problem? Nun, lasst uns sagen, dass in Ihrem abc.com/xyz.php Sie haben einige Logik wie:
Die zweite Anfrage erfolgt durch den DownloadListener wird eine weitere Anforderung an abc.com/xyz.php aber diesmal ist es nicht enthalten cookies oder session-Daten, damit es nicht geben Sie die "download" - Logik.
Eine mögliche Lösung wäre, einen redirect zu einer zeitlichen kopieren oder den tatsächlichen Pfad zu der Datei, die nicht enthält, jede Logik so ist es kein problem. Natürlich müssen Sie auch definieren Sie Ihre Download-listener innerhalb Ihrer WebView, so etwas wie dieses zum Beispiel.