我想在 laravel
中上传文件,我只使用本地服务器而不是任何云存储。
从doc中,我找到了两个与文件上传相关的方法,
- 普通方法
(Request::file('file')->move(dest,filename))
- 使用File system
但我无法理解这些方法之间的实际区别?
如果我用的是普通方法,
$file->move('path', $fileName);
这里路径应该放在哪里,storage/app
or public/uploads
(new)?
如何使用文件系统
上传文件?
最佳答案
“正常”方法允许您仅将上传的文件保存在您选择的任何位置的本地文件系统中,只要 PHP 对该位置具有写入权限。该方法只能用于“保存”操作,并且只能用于上传的文件。
“文件系统”方法更加灵活,因为它在您写入的地方添加了一个抽象层。文件系统配置存储在单独的配置中,并且对您的代码透明。您可以轻松更改底层存储(例如,从本地到云)或更改路径,而无需对代码进行任何更改。文件系统还为您提供了许多额外的辅助方法来操作它存储的文件,例如列出所有文件、检查是否存在、删除。另一个优点是它可以用于任何文件,而不仅仅是用户在当前请求期间上传的文件。
回答你的第二个问题:你决定在普通和文件系统方法中存储文件的位置。在传递路径的常规方法中,在文件系统中,您使用 filesystems.php 配置配置路径。
以及如何使用文件系统上传文件?您不使用文件系统上传文件,而是使用它来保存上传的文件。上传过程是相同的,但不是调用 $uploadedFile->move(),而是:
Storage::put('file key', file_get_contents(Request::file('file')->getRealPath()));
关于php - 在 laravel5.1 中使用 FileSystem 上传文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31422982/