我有一个包含员工详细信息的用户行,$image在数据库中存储了多个文件。我想下载每个文件。到目前为止,我只能下载存储在$image中的单个文件
这里是 myview.blade.php
```
{{$employee['image']}}
我的 `route.php` ```
Route::get('/people/employees/upload/{id}', 'EmplController@upload');
Route::get('/people/employees/download/{image}', 'EmplController@download');
我的 controller.php
```
public function test(Request $request, $id) {
$employee = User::find($id);
if($request->hasfile('image')){
$files = [];
foreach ($request->image as $image) {
$path = $image->getClientOriginalName();
$filename = time() . '-' . $path;
$files[] = $filename;
$image->storeAs('employees', $employee->id . '/' . $filename);
$image->move(public_path('employees'),$filename);
}
$files = explode(",", $files[0]);
}
$employee->image = $employee->image . $files[0];
$employee->save();
}
public function download($image){
$employee = User::find($image);
$filename = $image;
$filepath = public_path('employees/' . $filename);
return response()->download($filepath);
}
当我上传多个文件时执行打印功能,它会选择一个文件吗?
Array ( [0] => 1596838646-logo.jpg )
我想下载myview.blade上显示的多个文件。
2条答案
按热度按时间cnjp1d6j1#
我相信您要求的是使用http协议在同一请求上下载多个文件,这是不可能的,因为答案中解释了这一点:
laravel下载多个文件
我建议做一个客户端函数,可以为每个特定文件多次调用download方法。
e、 g根据你的问题,可能是这样的:
html格式:
js公司:
请注意,您需要将您的图像传递到一个数组或对象,从后端到前端,在那里您有您的html。
chy5wohz2#
正如上面的subop所说,这是不可能的,因为http不支持多个文件下载。其中一个解决方案是打开每个文件的连接进行下载,但在我看来,更优雅的方法是文件压缩,它拥有所有文件。
php提供了解决方案,它是ziparchive
之后,压缩所有文件,写入tmp目录中的磁盘,并使用文件位置发送流响应。在php关闭连接之后,您可以使用laravel终止中间件/回调并删除该归档文件以刷新磁盘上的空间。
从上面的链接中获取的普通php的简单示例。