Laravel 是否有本地永久上传文件存储位置的约定?
Does Laravel have a convention for a local permanent uploaded file storage location?
我有一些表单允许用户上传只有他们可以查看的文件,因此我必须将它们存储在某个地方。但是,如果我希望将这些文件保存在本地服务器上,我无法找到有关这些文件通常存储位置的任何信息。因此我不得不假设上传文件的永久存储位置没有约定。我的这个假设是否正确?
明确地说,我不是在谈论临时存储位置。
此外,将所有文件的存储位置作为应用程序目录的子文件夹(启用gitignore)是不是一个坏主意?或者将它放在应用程序文件夹之外会更好吗?谢谢!
Laravel上传到临时文件路径,然后你要移动文件:
$request->file('photo')->move($destinationPath);
此方法会将文件从其临时上传位置(由您的 PHP 配置确定)移动到您选择的更永久的目的地。
对于用户上传文件的存储位置没有明确的约定。
但是 Laravel 附带一个 storage
目录,用于存储与框架相关的数据,例如缓存、会话等。顾名思义,它是存储文件的好地方,而不仅仅是框架文件. Laravel Filesystem Documentation 还提到默认配置的位置是 storage/app
(但可以更改以满足您的需要):
When using the local driver, note that all file operations are relative to the root directory defined in your configuration file. By default, this value is set to the storage/app directory. Therefore, the following method would store a file in storage/app/file.txt
: Storage::disk('local')->put('file.txt', 'Contents');
此 storage/app 文件夹将默认被 Git 忽略。
如果您还需要公开这些文件,那么您有两个选择:
1. 将它们存储在 public
目录中的某处。
2. 按照上面的建议将它们存储在 storage
目录中,并从 public
位置创建一个符号 link 到该文件夹.在 Linux 你可以 运行 这个:
ln -s /path/to/laravel/public/files /path/to/laravel/storage/app/files
当然目录名可以随意,我以files
为例
第一个选项适用于您没有 shell 访问权限或无法创建符号 link 的情况。所以如果可能我建议你使用第二个选项。
我有一些表单允许用户上传只有他们可以查看的文件,因此我必须将它们存储在某个地方。但是,如果我希望将这些文件保存在本地服务器上,我无法找到有关这些文件通常存储位置的任何信息。因此我不得不假设上传文件的永久存储位置没有约定。我的这个假设是否正确?
明确地说,我不是在谈论临时存储位置。
此外,将所有文件的存储位置作为应用程序目录的子文件夹(启用gitignore)是不是一个坏主意?或者将它放在应用程序文件夹之外会更好吗?谢谢!
Laravel上传到临时文件路径,然后你要移动文件:
$request->file('photo')->move($destinationPath);
此方法会将文件从其临时上传位置(由您的 PHP 配置确定)移动到您选择的更永久的目的地。
对于用户上传文件的存储位置没有明确的约定。
但是 Laravel 附带一个 storage
目录,用于存储与框架相关的数据,例如缓存、会话等。顾名思义,它是存储文件的好地方,而不仅仅是框架文件. Laravel Filesystem Documentation 还提到默认配置的位置是 storage/app
(但可以更改以满足您的需要):
When using the local driver, note that all file operations are relative to the root directory defined in your configuration file. By default, this value is set to the storage/app directory. Therefore, the following method would store a file in
storage/app/file.txt
:Storage::disk('local')->put('file.txt', 'Contents');
此 storage/app 文件夹将默认被 Git 忽略。
如果您还需要公开这些文件,那么您有两个选择:
1. 将它们存储在 public
目录中的某处。
2. 按照上面的建议将它们存储在 storage
目录中,并从 public
位置创建一个符号 link 到该文件夹.在 Linux 你可以 运行 这个:
ln -s /path/to/laravel/public/files /path/to/laravel/storage/app/files
当然目录名可以随意,我以files
为例
第一个选项适用于您没有 shell 访问权限或无法创建符号 link 的情况。所以如果可能我建议你使用第二个选项。