0

ユーザーが画像を直接ダウンロードできるスクリプトを作成しようとしていました。
ここに私が最終的なコードがあります、

   <?php
        $fileContents   =   file_get_contents('http://xxx.com/images/imageName.jpg');
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.urlencode("http://xxx.com/images/imageName.jpg"));
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($fileContents));
        ob_clean();
        flush();
        echo $fileContents;
        exit;
    ?>

しかし、ブラウザーで上記のスクリプトの URL にアクセスするたびに、ゼロ バイト データのファイルが返されます。
この問題を解決するのを手伝ってくれませんか?

4

2 に答える 2

0

ファイル名自体ではなく、ファイルの内容にfilesizeを使用していることに気付きました。

次の場合、コードは機能します。

<?php
    $filename = 'http://xxx.com/images/imageName.jpg';
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.urlencode($filename));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($filename));
    ob_clean(); // not necessary
    flush();  // not necessary
    echo file_get_contents($filename); // or just use readfile($filename);
    exit;
?>
于 2013-01-18T07:59:14.190 に答える
0

以下のコードを試してください

<?php 
    $file_name = 'file.png';
    $file_url = 'http://www.myremoteserver.com/' . $file_name;
    header('Content-Type: application/octet-stream');
    header("Content-Transfer-Encoding: Binary"); 
    header("Content-disposition: attachment; filename=\"".$file_name."\""); 
    readfile($file_url);
?>

続きを読む、このチュートリアルも読む

于 2013-01-18T06:19:19.380 に答える