Android標準ブラウザでダウンロードできない現象

2014/12/20 [13:32:37] (土) 天気

Android標準(?)のブラウザでPDFやzip、epubファイルのダウンロードができなくて吐血。


PCのブラウザやiphone(iOS)、AndroidでもChrome、Firefoxなどのブラウザだと意図通り問題なくダウンロードできるのに、Android標準(?)のブラウザだとダウンロードできない。というか、なぜか、ページのHTMLをダウンロードしてしまう。


謎な挙動のスマホ標準ブラウザに対応する必要があるのかという、そもそものところはまた別として。

調べてみたら、検索のしかたが悪いのか情報が錯綜していて正解が見えてこない。


スクリプトが吐くヘッダは定型。


Content-Type:application/epub+zip
Content-Disposition:attachment; finename="FILENAME"

このヘッダに続いて、epubファイルが標準出力に吐き出される。ほかのいろんなスクリプトで使っているやりかたで、Androidスマホ以外では問題なく意図通りダウンロードできている。


老眼血眼、しこたま検索しまくって、こちらのサイト

「コンピュータの日々 Android付属ブラウザのファイルダウンロードの動作」


AndroidのブラウザがPOSTメソッドでサーバにリクエストして、サーバからContent-Disposition:attachmentなヘッダを受け取ると、再びGETメソッドで同じURLにリクエストを送信するとのことです。

へ? と思ってアクセスログを見るとAndroidスマホのブラウザ(docomoのスマホ L-05E 、mobile safari)は、確かにPOSTでアクセスしてきた後、なぜかGETでアクセスしている。


ページのHTMLを取得してるので、最初はブラウザのキャッシュを疑ったんだけど、どうやら真相はこいつ。attachmentで渡してるはずのepubファイルではなくて、次のGETでページのHTMLをダウンロードしているご様子だ。


なんでやねん。



以上は、とりあえずのメモ。

これじゃ、スクリプトで吐き出させたんじゃダウンロードしてくれない、ということになる。

ダウンロードしてもらう方法としては、一度サーバーにファイルを書き出して、静的リンクをクリックしてもらうしかない…うーん、ほんまかいな。


スクリプトで直接ダウンロードする方法をもうちょっと調べてみる。たぶん、わたしのスキル不足だと思う(詠み人知らず)

image


[12/20 21:30:21] 追記。

現状、スマホ標準のブラウザは .epub ファイルにリンクしても、ブラウザが epub ファイルを開いて表示しやがる。

バイナリを文字化けした文字にしてブラウザにダアアアアッと表示する。なんじゃそりゃ状態。


なもんで、.htaccess で(httpd.confでもいいけど) MIME TYPE を指示(指定)してやる必要がある(epubという拡張子のファイルにアクセスされたらどうするのかの設定)

addType application/octet-stream .epub


…て、epub自体が最近なので、Android標準ブラウザに適切な対応を求めるのは可哀想、というか無理かもしれん。もう意味不明なブラウザを使うのではなくて、Firefoxなり、PCでも使われるブラウザとその挙動を標準にすべきだろう。



[2016/01/03 10:47:38] 追記。

どうやら現状のAndroidの「ダウンロード」(ダウンローダー)はSSLのページや認証が必要なページからはダウンロードできない困った仕様っぽい。


・ブラウザで閲覧→PDFやzipをタップ→ダウンローダーが起動してzipやPDFをダウンロード

という流れだとダウンロードできない。


・ブラウザで閲覧→PDFやzipをタップ→ブラウザがPDFやzipをダウンロード

だとダウンロードができる。Firefoxなどだとダウンロードができる、ということ。



スマホって、なんでまた「ダウンローダー」なんてのを噛ませることになったんだろう。

<<2026/1>>
    123
45678910
11121314151617
18192021222324
25262728293031
検索:

【最近の20件】