2

1 つのスクリプトで、次のことを行う必要があります。

  1. ディレクトリ内のファイルから zip を作成する
  2. 新しく作成された zip のダウンロードを強制する

私の問題は、単一のスクリプトでこれを実行しようとすると、ダウンロードした zip が破損することです (ただし、ファイルサイズは問題ありません)。2 つの別々のスクリプト呼び出しでプロセスをトリガーすると、ダウンロードされた zip は問題ありません。

問題は、ダウンロードが開始される前に、ファイルへの zip 保存プロセスが完全に終了していないことだと思います。奇妙なことに、プロセス間に sleep(3) を挿入しても問題は解決しません... 以下のコードの概要。

強制ダウンロードが開始される前に、zip ファイルが完全に終了していることを確認するにはどうすればよいですか?

よろしく / ジョナス

// 1. create a zip
$createZipFile = new CreateZipFile('temp.zip');
$createZipFile->zipDirectory('temp/', '.');
$createZipFile->saveZipFile();

sleep(3); // <-- Doesn't matter!

// 2. force zip download
$fileServer = new FileServer();
// Line below gives a corrupted zip when run in same script as 1.       
$fileServer->forzeDownload('temp.zip'); 
4

2 に答える 2

1

zip を作成し、ユーザーをそのファイルにリダイレクトします。

http://php.net/manual/en/function.header.php

于 2009-08-23T10:48:16.070 に答える
0

ジョレンビーとガンボ、ありがとう!texteditor の検査により、元の zip には影響しないが、ダウンロード時にブラウザーに送信されるデータを破損する、zip 作成でのデバッグ出力が明らかになりました。

于 2009-08-23T11:03:16.287 に答える