2011-11-05 9 views
1

誰かがムービーファイルを自分のデバイスにダウンロードできるようにする簡単なスクリプトがあります。このコードは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>"; 
    } 
?> 

答えて

0

問題は、ファイル名にスペースが含まれていて、Androidがそれを好まないということでした。私はスペースを削除し、すべてが問題ありません。

1

Because Android doesn't natively support Quicktime, an Apple technology.それはnothing forcing it toがあるとして、それは、ファイルシステムにファイルを書き込むために使用する名前として、このアプリをダウンロードするために使用されるクライアントがHTTP封筒に設定されたファイル名を尊重されていないことも非常に可能です。

+0

私は、AndroidがネイティブにQuicktimeをサポートしていないが、これは私の懸念事項ではない。私はただファイルをダウンロードできるようにしたい、私はそれを再生することに懸念していない。クライアントは、httpエンベロープに指定された名前にファイル名の名前を付けることを強制しません。それを強制する方法はありますか? – Adam

+0

私があなたが提供したリンクを読むと、私はそれが私を助けるとは思わない。 Android用のアプリをJavaで書くことについて話している。これは私がやろうとしていることではない。私は、デバイスがファイルをダウンロードできるようにするPHP Webアプリケーションを作成しようとしています。私はアンドロイドアプリを書かない限り、ブラウザにファイル名を使用させることができないと言っているのでしょうか? – Adam

+0

うん、それはスニペットが照らすためのものだった。問題のブラウザ(おそらくネイティブのものかDoplhinのどちらか)がファイルのダウンロード操作をどのように実装しているのかを言うのは難しいですが、あなたが提供または書き換えるfilename属性を使用しない可能性が非常に高いです。 –

関連する問題