问题描述
我有 10 个用于上传文件的输入 我希望他们保存为 1 个文件 zip 并下载文件 zip
public function store(Request $request)
{
$clients = $request->all();
for($i=1 ; $i<10 ; $i++){
if ($request->hasFile('document'.$i)) {
$clients['document'.$i] = $request['document'.$i]->getClientOriginalName();
$request['document'.$i]->storeAs('documents'.'/'. $clients['phone'],$clients['document'.$i]);
}
}
Submite::create($clients);
return redirect()->route('submited.index');
}
public function download($id)
{
$clients = Submite::where('id',$id)->firstOrFail();
$pathToFile = storage_path('app/documents/'.$clients['phone']. '/' .$clients->document1);
return response()->download($pathToFile);
}
解决方法
首先,您最好使用 foreach
而不是 for
。
事情是这样的:
对于商店:
-
获取您的所有文件。
-
将它们转换为 Zip 文件。
-
将 Zip 文件存储在磁盘上。
-
将路径存储在数据库中。
下载:
- 只需获取文件路径并做出下载响应即可。