【发布时间】:2023-02-11 01:09:00
【问题描述】:
这是我想将我的 pdf 文件存储在我的公共文件夹中的数据。任何人都可以给我任何想法吗?
我试图通过 foreach 数据来获取该文件,但它似乎最终无法正常工作。任何人都可以帮助我吗?
【问题讨论】:
标签: arrays laravel multiple-file-upload laravel-controller
这是我想将我的 pdf 文件存储在我的公共文件夹中的数据。任何人都可以给我任何想法吗?
我试图通过 foreach 数据来获取该文件,但它似乎最终无法正常工作。任何人都可以帮助我吗?
【问题讨论】:
标签: arrays laravel multiple-file-upload laravel-controller
要将文件存储在公共文件夹中,您可以使用包含在应用程序文件系统配置文件中的公共磁盘,默认配置会将文件存储在storage/app/public 中。
要使这些文件可从网络访问(我假设这就是您想要的),您需要创建一个从public/storage 到storage/app/public 的符号链接。
为此,只需运行:
php artisan storage:link
完成此操作后,您可以使用 Laravel 的 storage facade 与公共文件夹中的文件进行交互,以保存、检索和下载它们。
店铺
use IlluminateSupportFacadesStorage;
Storage::put('file.jpg', $contents);
下载
return Storage::download('file.jpg');
return Storage::download('file.jpg', $name, $headers);
取回
$contents = Storage::get('file.jpg');
如果您需要将用户上传的文件存储到您的公共存储,您可以这样做:
$path = $request->file('yourUploadedPdf')->store('yourPdfsFolder');
Laravel 的 store 方法将为文件名生成一个唯一的 ID,扩展名将由上传文件的 MIME 类型决定。 store 方法还返回路径,包括生成的文件名,因此您可以根据需要将其存储在数据库中。
如果您需要指定文件名,那么您可以这样做:
$path = $request->file('pdf')->storeAs(
'yourPdfsFolder', 'yourPdfFileName'
);
请注意,我假设您将 public 作为您的默认磁盘,如果没有,那么您需要指定您在这些方法/存储外观调用中使用的磁盘。
另外请注意,当使用公共磁盘时,默认情况下所有内容都存储在storage/app/public 下,因此无论何时您定义一个文件夹来存储上传的 PDF,它都将是storage/app/public/yourFolder。
【讨论】: