1

ポストバック時に関数を呼び出してダウンロードを開始する単純なフォームがあります。パスとファイル名はデータベースから取得され、ヘッダーを使用してダウンロードを開始します。ダウンロード用の私のコードは次のとおりです。

//START DOWNLOAD
header('Content-type: "application/octet-stream"');
header('Content-Disposition: attachment; filename="'.$FILE_PATH.$FILE_NAME.'"');
header("Content-Transfer-Encoding: binary");
header("Connection: close") 

上記の例では、$FILE_PATH 変数は /downloads/software/ で、$FILE_NAME 変数は client-installer.exe です。つまり、client-installer.exe (約 70MB) というファイルがクライアントにダウンロードされると予想されます。代わりに、_downloads_software_client-installer.exe という約 10 KB のファイルを取得します。

ファイルのパス/名前を urlencode する必要があるのではないかと思いましたが、それでも問題は解決しませんでした。そのため、ヘッダーに何か問題があるのではないかと考えていますが、見つけられないようです。

ありがとうございました!

4

1 に答える 1

1

ファイル名ヘッダーは、ファイルの名前を示すだけです。パスではなく、ファイル名のみを含める必要があります。サーバーのハード ディスクの内部パスは無関係であり、クライアントにとって重要ではありません。サーバーは、応答で実際のファイル データを出力する必要があります。クライアントは、指定されたパスからサーバーからデータを取得できません。

を参照してくださいreadfile

于 2012-12-04T19:42:45.100 に答える