Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何创建和下载没有路径目录的zip文件_Php - Fatal编程技术网

Php 如何创建和下载没有路径目录的zip文件

Php 如何创建和下载没有路径目录的zip文件,php,Php,我的代码创建了一个ZIP文件,并将其下载到这个ZIP文件夹中,其中包含一些图像 它做得很好,但问题是,在我下载并解压缩此文件夹后,所有路径文件夹也将成为我的代码: $id=$row['id']; $doc_name=$row['doc_name']; $file_name=分解(“,”,$doc_name); $file\u path=$\u ROOT\u REQUIRE.“上传/document/”; $archive\u file\u name=“demo.zip”; $zip=新ZipAr

我的代码创建了一个ZIP文件,并将其下载到这个ZIP文件夹中,其中包含一些图像

它做得很好,但问题是,在我下载并解压缩此文件夹后,所有路径文件夹也将成为我的代码:

$id=$row['id'];
$doc_name=$row['doc_name'];
$file_name=分解(“,”,$doc_name);
$file\u path=$\u ROOT\u REQUIRE.“上传/document/”;
$archive\u file\u name=“demo.zip”;
$zip=新ZipArchive($archive\u file\u name);
如果($zip->open($archive\u file\u name,ZIPARCHIVE::CREATE)!==TRUE){
echo“无法打开\n”;
退出(“无法打开”);
}
foreach($file\u名称为$files){
如果($files!=''){
$zip->addFile($files),basename($files));
}
} 
$zip->close();
标题(“内容类型:应用程序/zip”);
标题('Content-Disposition:attachment;filename=“”.basename($archive_file_name)。“”);
标题(“内容传输编码:二进制”);
标题('Content-Length:'.filesize($archive\u file\u name));
标头('Cache-Control:private');
ob_clean();
冲洗();
readfile(basename($archive_file_name));
出口

不清楚为什么会发生这种情况,请看这一行:

$zip->addFile("$files", basename($files));
为什么在
$files
周围有
引号?我建议将其改为:

$zip->addFile($files, basename($files));
你的代码看起来很好。 只需更换您的Foreach循环

foreach ($files as $file)
{
    $file = str_replace('\\', '/', $file);          
    if(filetype($file) == 'file') {         
        $zip->addFile( $file, pathinfo( $file, PATHINFO_BASENAME ) );
    }
}
应该是工作
谢谢

这些是我所做的更改,现在效果很好。谢谢大家

  • $overwrite=true;

  • if($zip->open($archive\u file\u name,$overwrite?ZIPARCHIVE::overwrite:ZIPARCHIVE::CREATE)!==true)

  • 这个较大的部分:

    foreach ($file_names as $file) {
        $files = $file_path.$file;
        $files = str_replace('\\', '/', $files);          
        if(filetype($files) == 'file') {
            $zip->addFile( $files, pathinfo( $files, PATHINFO_BASENAME ) );
        }
    }  
    

  • 谢谢,亲爱的,完成了。谢谢,亲爱的,完成了