gpt4 book ai didi

php - Laravel 5 zip存档到存储与公开

转载 作者:行者123 更新时间:2023-12-02 03:30:12 24 4
gpt4 key购买 nike

在我的 Larevel 应用程序中,我想将一些文件放在一个 zip 文件中以供客户端下载。我不想将 zip 放在公共(public)文件夹中。因此,我在“/storage”文件夹中创建了一个“tobedownload”文件夹,并计划将 zip 文件放在那里。但我得到了糟糕的错误:

"ZipArchive::close(): Failure to create temporary file: No such file or directory"   

我的示例代码是这样的:(假设需要放入zip的文件是public文件夹中的“whatever.PNG”。不用担心,在实际实现中我不会使用该位置的文件。示例存档文件名为“AllDocuments.zip”(位于 storage/tobedownload 文件夹下)。
公共(public)函数 downloadzip(){

     Storage::makeDirectory('tobedownload',$mode=0775); 

$path=storage_path('tobedownload');
$public_dir=public_path();

$zipFileName = 'AllDocuments.zip';


$zip=new ZipArchive();

if ($zip->open( $path. '/' .$zipFileName, ZipArchive::CREATE))
{
$zip->addFile($public_dir.'/whatever.PNG' ); //where the file needs to be add to archive
$zip->close();

}

}

但是,如果我将新的 zip 文件放入公共(public)文件夹中,我就可以创建 zip。以下示例代码有效。
公共(public)函数downloadzip(){ //如果我将存档放在公共(public)文件夹中,似乎一切正常

   $public_dir=public_path();

$zipFileName = 'AllDocuments.zip';


$zip=new ZipArchive();

if ($zip->open( $public_dir. '/' .$zipFileName, ZipArchive::CREATE))
{
$zip->addFile($public_dir.'/whatever.PNG' ); //where the file needs to be add to archive
$zip->close();

}

}

我怀疑这是权限问题,但我已经设置了存储 0755。感谢您的帮助...我使用的是 Laravel 5.6。

最佳答案

好的,我想我已经明白了。文件夹错误。当您在存储上创建目录时。 Storage::disk('local')->makeDirectory('yourfolder') 您创建的文件夹位于 /storage/app/yourfolder 上,而不是 /存储/您的文件夹

因此,在我之前的代码中,将 $path=storage_path('tobedownload'); 更改为 $path=storage_path('app/tobedownload'); 使其正常工作.

关于php - Laravel 5 zip存档到存储与公开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52042697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com