【发布时间】:2011-10-14 13:37:08
【问题描述】:
我有一个项目,用户可以将多个文件添加到购物车中,然后将它们压缩到一个文件中并一次下载所有文件。
似乎一旦购物车变得大于 10mb,它就无法创建 zip 文件。 我认为这可能是因为 upload_max_filesize,但设置为 200m,post_max_size 也是如此。
什么会限制这一点?
这是我的代码。 它创建一个随机文件名,然后检查购物车循环并添加每个文件。
// create object
$zip = new ZipArchive();
$filename = "loggedin/user_files/ABX-DOWNLOAD-".rand(1, 1000000).".zip";
while (file_exists($filename)):
$filename = "loggedin/user_files/ABX-DOWNLOAD-".rand(1, 1000000).".zip";
endwhile;
// open archive
if ($zip->open('../'.$filename, ZIPARCHIVE::CREATE) !== TRUE) {
die ("Could not open archive");
}
// add files
//echo $all_audio;
foreach($audio_ids as $audio_id){
if($audio_id != ""){
$audio = Audio::find_by_id($audio_id);
$selected_category = Categories::find_by_id($audio->category_id);
$selected_sub_category = Sub_Categories::find_by_id($audio->sub_category_id);
$selected_sub_sub_category = Sub_Sub_Categories::find_by_id($audio->sub_sub_category_id);
$f = "uploads/mp3/".$selected_category->category_name."/".$selected_sub_category->sub_category_name."/".$selected_sub_sub_category->sub_sub_category_name."/".$audio->media_path;
$zip->addFile($f) or die ("ERROR: Could not add file: $f");
}
}
// close and save archive
$zip->close() or die("ERROR: COULD NOT CLOSE");
}
【问题讨论】:
-
一些代码可以帮助我们更好地帮助您。
-
实际上在多次上传同一个文件并将其添加到 zip 之后,我能够创建一个大于 10mb 的 zip。看起来这不是问题。
-
好吧,缩小范围。路径名已损坏,并且由于文件不存在而导致 zip 错误。看起来我需要更好的错误检查。
标签: php file size ziparchive