誰かがムービーファイルを自分のデバイスにダウンロードできるようにする簡単なスクリプトがあります。このコードはAndriodを除いてテストしたすべてのものでうまく動作します。 Androidデバイスは、名前とファイル拡張子を真似します。 2.qtまたは.binファイルを呼び出すことがあります。なぜこれは失敗するのですか?このPHPダウンロードスクリプトがAndroidでのみ失敗するのはなぜですか?
<?php
if(isset($_GET['filename'])) {
header('Content-Description: File Transfer');
header('Content-Type: movie/quicktime');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize("$file"));
ob_clean();
flush();
readfile("$file");
} else {
echo "Link: <a href='test.php?filename=test.mov'>Download Video</a>";
}
?>
私は、AndroidがネイティブにQuicktimeをサポートしていないが、これは私の懸念事項ではない。私はただファイルをダウンロードできるようにしたい、私はそれを再生することに懸念していない。クライアントは、httpエンベロープに指定された名前にファイル名の名前を付けることを強制しません。それを強制する方法はありますか? – Adam
私があなたが提供したリンクを読むと、私はそれが私を助けるとは思わない。 Android用のアプリをJavaで書くことについて話している。これは私がやろうとしていることではない。私は、デバイスがファイルをダウンロードできるようにするPHP Webアプリケーションを作成しようとしています。私はアンドロイドアプリを書かない限り、ブラウザにファイル名を使用させることができないと言っているのでしょうか? – Adam
うん、それはスニペットが照らすためのものだった。問題のブラウザ(おそらくネイティブのものかDoplhinのどちらか)がファイルのダウンロード操作をどのように実装しているのかを言うのは難しいですが、あなたが提供または書き換えるfilename属性を使用しない可能性が非常に高いです。 –