3

アプリケーションを WAMP サーバー (PHP バージョン <= 5.2、Windows XP) から LAMP サーバー (PHP > 5.3、Ubuntu 12.04 LTS) に移動しましたが、現在の問題は、ダウンロード関数が画面にファイルを出力することです。ブラウザにダウンロードを強制するわけではありません。

誰でも私を正しい方向に向けることができますか?

コードは次のとおりです。

function download()
{

$fullPath = $_POST['fisier'];

if($fullPath=="NULL")
{
 echo "Wrong path!";
}
else
{

$fd = fopen ($fullPath, "r");

if ($fd) {
    $fsize = filesize($fullPath);
    $path_parts = pathinfo($fullPath);
    $ext = strtolower($path_parts["extension"]);    

    switch ($ext) {
        case "pdf":
            header("Content-type: application/pdf"); 
            break;

        case "tiff":
            header("Content-type: image/tiff");

            break;

        case "tif":
            header("Content-type: image/tiff" );
            break;

        default:    
             header("Content-type: application/force-download");
            break;
    }
    header("Content-Description: File Transfer"); 
    header('Content-Disposition:  attachment; filename="'.$path_parts["basename"].'"');
    header("Content-length: ".$fsize);
    header("Cache-control: private"); //use this to open files directly


    ob_clean();
    flush(); 
    while(!feof($fd)) {
        $buffer = fread($fd, 2048);
        echo $buffer;
    }

}

fclose ($fd);
exit;
}
}
4

3 に答える 3

1

PHP docsContent-Dispositionに従ってヘッダーを使用できます。

生成された PDF ファイルなど、送信するデータを保存するようにユーザーに促したい場合は、 » Content-Disposition ヘッダーを使用して推奨ファイル名を指定し、ブラウザに保存ダイアログを表示させることができます。

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');
于 2013-03-19T22:45:31.290 に答える
0

header("Content-type: application/octet-stream");代わりに使ってみてくださいheader("Content-type: application/force-download");

于 2013-03-19T22:43:35.860 に答える
0

「アプリケーション/オクテット ストリーム」エンティティを受け取る実装に推奨されるアクションは、単にデータをファイルに入れることを提案することです。

ここから。あなたapplication/force-downloadは非標準のようです。

于 2013-03-19T22:45:18.050 に答える