Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.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 在Laravel中下载多个上载的文件_Php_Laravel - Fatal编程技术网

Php 在Laravel中下载多个上载的文件

Php 在Laravel中下载多个上载的文件,php,laravel,Php,Laravel,我有一个表单输入,可以上传多个文件。因此,所有文件路径都以字符串数组的形式保存在数据库中。下面是我的控制器下载的文件。我想知道如何在blade view中显示要下载的每个文件。所以我可以一次下载一个文件。下面是我的控制器。它只在下载单个文件时起作用。我收到此错误为foreach()提供的参数无效 当您返回第一个文件时,它将中断foreach循环。因此,您必须一起返回所有文件。实现这一点的唯一方法是创建一个包含所有文件的zip文件 为此,您可以使用软件包 更新 将访问器添加到处理模型,以将文件作为

我有一个表单输入,可以上传多个文件。因此,所有文件路径都以字符串数组的形式保存在数据库中。下面是我的控制器下载的文件。我想知道如何在blade view中显示要下载的每个文件。所以我可以一次下载一个文件。下面是我的控制器。它只在下载单个文件时起作用。我收到此错误
为foreach()提供的参数无效

当您返回第一个文件时,它将中断foreach循环。因此,您必须一起返回所有文件。实现这一点的唯一方法是创建一个包含所有文件的zip文件

为此,您可以使用软件包

更新

将访问器添加到处理模型,以将文件作为数组获取

交易模式

php artisan getUploadsAttribute($attribute){
   return explode(",",$attributes);
}

$files中有什么内容?据我所见,您正试图迭代findOrFailed
交易的
uploads
属性(列)。我猜上传的
包含一个字符串。例如,您是使用字符串分隔符存储一个文件还是多个文件?@Mtxz我在“上载”列中使用字符串分隔符存储许多文件,谢谢,但当我尝试下载时,文件“C:\xampp\htdocs\accounts\public\temporary\u files/deals.zip”出现此错误
不存在
@lawkunchi你安装了软件包吗?是的,我安装了package@lawkunchi哦,我以为在后台有一些访问者,从来没有问过。但奇怪的是,它会抛出错误,比如$files不是iterabler之类的。。无论什么您能否将您的交易模型添加为上传文件的访问者,然后重试?我将向您展示如何做是的,我认为文件是不可编辑的,因为我使用
内爆(',',$path)将它们存储为字符串
其中
$path
是上载文件的数组
public function download($id) {
    $deal = Deal::findorFail($id);
    $files = $deal->uploads;

    foreach ($files as $file) {
        return Storage::download($file);
--------^^^^^^-------------------------
    }
}
$zipper = Zipper::make(public_path('/documents/deals.zip'));
foreach ($files as $file) {
    $zipper->add(public_path($file)); // update it by your path
}
$zipper->close();
return response()
    ->download(
        public_path('/temporary_files/' . "deals.zip"),
        "deals.zip", 
        ["Content-Type" => "application/zip"]
    );
php artisan getUploadsAttribute($attribute){
   return explode(",",$attributes);
}