Laravel - S3 多文件压缩和下载
Laravel - S3 multiple file zip and download
有什么方法可以在 Laravel 中的 return 中循环或执行某些 foreach 操作吗?
我有这个包 https://github.com/stechstudio/laravel-zipstream 用于从 s3 下载 zip。所有文件都适用于单个文件和多个文件,但前提是每个文件都在单独的行中提供。
use Zip;
public function z4()
{
return Zip::create("package.zip")
->add("s3://testbucket/images/26/17/full/BS288.jpg", "BS288.jpg")
->add("s3://testbucket/images/26/17/full/BS289.jpg", "BS289.jpg")
->add("s3://testbucket/images/26/17/full/BS290.jpg", "BS290.jpg")
}
但是如何使用数据库中的数据进行此操作
$photos = DB::table('gallery_image')
->where('folder_id','=',$id)
->select('original_name')->get();
这是从 $photos:
中 return 编辑的数组
Illuminate\Support\Collection {#1017 ▼
#items: array:131 [▼
0 => {#1025 ▼
+"original_name": "BS288.jpg"
}
1 => {#1022 ▼
+"original_name": "BS289.jpg"
}
2 => {#1026 ▼
+"original_name": "BS290.jpg"
}
这段代码将return总是一个文件
foreach($photos as $image) {
return Zip::create("package.zip", [
"s3://asystentfotografa/images/26/17/full/".$image->original_name,
]);
}
您可能需要更改我使用的 field names
,因为它们可能不准确,但是,像下面这样的东西呢?
public function z4()
{
$photos = DB::table('gallery_image')
->where('folder_id','=',$id)
->select('original_name')->get();
$zip = Zip::create('package.zip');
foreach ($photos as $photo) {
$zip->add('s3://testbucket/images/' . $photo->gallery_id . '/' . $photo->folder_id . '/full/' . $photo->original_name);
}
}
有什么方法可以在 Laravel 中的 return 中循环或执行某些 foreach 操作吗? 我有这个包 https://github.com/stechstudio/laravel-zipstream 用于从 s3 下载 zip。所有文件都适用于单个文件和多个文件,但前提是每个文件都在单独的行中提供。
use Zip;
public function z4()
{
return Zip::create("package.zip")
->add("s3://testbucket/images/26/17/full/BS288.jpg", "BS288.jpg")
->add("s3://testbucket/images/26/17/full/BS289.jpg", "BS289.jpg")
->add("s3://testbucket/images/26/17/full/BS290.jpg", "BS290.jpg")
}
但是如何使用数据库中的数据进行此操作
$photos = DB::table('gallery_image')
->where('folder_id','=',$id)
->select('original_name')->get();
这是从 $photos:
中 return 编辑的数组 Illuminate\Support\Collection {#1017 ▼
#items: array:131 [▼
0 => {#1025 ▼
+"original_name": "BS288.jpg"
}
1 => {#1022 ▼
+"original_name": "BS289.jpg"
}
2 => {#1026 ▼
+"original_name": "BS290.jpg"
}
这段代码将return总是一个文件
foreach($photos as $image) {
return Zip::create("package.zip", [
"s3://asystentfotografa/images/26/17/full/".$image->original_name,
]);
}
您可能需要更改我使用的 field names
,因为它们可能不准确,但是,像下面这样的东西呢?
public function z4()
{
$photos = DB::table('gallery_image')
->where('folder_id','=',$id)
->select('original_name')->get();
$zip = Zip::create('package.zip');
foreach ($photos as $photo) {
$zip->add('s3://testbucket/images/' . $photo->gallery_id . '/' . $photo->folder_id . '/full/' . $photo->original_name);
}
}