2
    <?php



$direc = base64_decode($_GET['path']);



    $zip = new ZipArchive();

    if ($zip->open($archive_file_name, ZIPARCHIVE::CREATE) !== TRUE) {
        exit("cannot open <$archive_file_name>\n");
    }
    //add each files of $file_name array to archive
    foreach ($file_names as $files) {
        $zip->addFile($file_path . $files, $files);
    }
    $zip->close();



    header('Content-Type: application/octet-stream');
    header("Content-Disposition: attachment; filename=" . $archive_file_name);
    header('Cache-control: private, must-revalidate');
    header('Content-Transfer-Encoding: binary');
    readfile("$archive_file_name");
    exit;
}

if (isset($_POST['file'])) {
    $file_names = $_POST['file'];
    $archive_file_name = 'zipped.zip';
    $file_path = $direc;
    echo $file_path;


//Run Function above
    zipFilesAndDownload($file_names, $archive_file_name, $file_path);


    if (file_exists($archive_file_name)) {
        unlink($archive_file_name);
    }

?>

上記のコードを見つけて試してみました.zipファイルは作成されましたが、ステートメントunlink($zipname);は機能しません .許可については問題ありません.

そのファイルは書き込み保護されていますか? その問題を解決する方法は?

友よありがとう

4

1 に答える 1

2

上記の関数は、exit ではなく return を呼び出す必要があります。Exit はスクリプトの実行を終了するため、その後は何も呼び出されません。おそらく file_exists の部分に到達していません。

于 2011-06-28T14:16:30.257 に答える