1

zip画像用のPHP自動ダウンローダーを作成しています。ただし、ダウンロードしたZIPは空です。うまくいけば、誰かが問題を知っているでしょう-それは単純なはずです。

ニック、どうもありがとう。

PHP

    foreach($_SESSION["photoBasket"] as $id){
       $files[] = array(
               "loc" => "../photos/$id.png",
               "name" => "$id.png"
                );
    }

    $zipname = tempnam(sys_get_temp_dir(), 'zip');
        $zip = new ZipArchive();
        $zip->open($zipname, ZipArchive::CREATE);
        foreach ($files as $file) {
          $zip->addFile($file["loc"],$file["name"]);
          //$zip->addFromString($file["name"],"something here"); WORKS FINE
        }
        $zip->close();

        header("Pragma: public");
        header("Expires: 0");
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
        header('Content-Type: application/zip');
        header('Content-Disposition: attachment; filename=test.zip');
    readfile($zipname);
    unlink($zipname);
4

1 に答える 1

4

書き込み可能なフォルダにファイルを作成する必要があります。また、ZIPを同時にダウンロードする2人が互いに上書きしないように、ファイル名は一意である必要があります。tempnam()sys_get_temp_dir( )を使用して、PHPにその詳細を理解させます。また、一時ファイルを送信した後は、一時ファイルを削除することを忘れないでください。

$zipname = tempnam(sys_get_temp_dir(), 'zip');
...
unlink($zipname);
于 2012-12-15T22:32:00.417 に答える