0

以前は、phpとIISでwavファイルをダウンロードできました。しかし、現在ファイルはダウンロードできません。何が問題になっているのかわかりません。IISでphpマネージャーを使用してphp5.3をphp5.4にインストールおよび変更した後、ファイルをダウンロードできません。私はそれをダウンロードするためのファイルへのリンクを持っています、それはこのように見えます:

       <a href="download.php?voice='$filename'"> Download </a>

download.phpスクリプト

     <?php
       $filename = $_GET['voice'];
       $dir = 'd:/temp_file/voice/';
       if(is_file($dir.$filename))
        {
          header('Content-type: audio/wav');
          header('Content-Disposition: attachment; filename='".$filename.'"');
          echo file_get_contents($dir.$filename);
       }
      ?>

ファイルがダウンロードできない理由を見つけようとしていたときに、ifステートメントを削除してプログラムを実行すると、空のwavファイルのオーディオプレーヤーでウィンドウのダウンロードファイルが表示されます。したがって、別のドライブのファイルにアクセスできないパスに誤りがあると結論付けます。c:\ inetpub \ wwwroot \にphpコードがありますが、ダウンロードするwavファイルはd:\ temp_file\voiceパスにあります。私は何をしなければなりませんか?

4

2 に答える 2

1

おそらく PHPの open_basedir制限です。

d:/temp_file/voice/のコンテンツにを追加してみてくださいphp.ini

アップデート

IIS を使用したことはありませんが、もう 1 つ確認しなければならないことは、IIS ユーザーがそのディレクトリを読み取る権限を持っているかどうかです。Everyoneへのすべての許可を得て、テスト用に追加してみてくださいd:\temp_file\voice

于 2012-04-25T09:40:42.550 に答える
0

何が悪いのかわからない

次に、エラー報告を有効にします。私には構文エラーのように見えますが 、の後にheader('Content-Disposition: attachment; filename='".$filename.'"')引用符(')がありませんfilename='"。しかし、あなたはそれがうまくいった(そしてそれなしでうまくいくif)と言っているので、それはコピーペーストエラーだと思います。

次にvar_dump($filename)、リンク(<a href="download.php?voice='$filename'">)のURLの前後に引用符を配置するため、引用符が含まれている可能性のあるを実行します。ファイルD:/temp_file/voice/'foo.wav'が存在しない可能性があります。

于 2012-05-01T11:26:42.937 に答える