Php 在laravel5.1中使用文件系统上传文件?

Php 在laravel5.1中使用文件系统上传文件?,php,laravel,file-upload,laravel-5,laravel-5.1,Php,Laravel,File Upload,Laravel 5,Laravel 5.1,我想在laravel中上传文件,我只使用本地服务器,不使用任何云存储。 从doc中,我找到了两种与文件上传相关的方法 普通方法(请求::文件('file')->移动(dest,filename)) 使用 但我无法理解这些方法之间的实际区别 如果我用正常的方法 $file->move('path', $fileName); 这里应该是路径的位置,存储/app或公共/uploads(新) 如何使用文件系统上传文件?这两种方法的区别在于使用方法 您可以使用“文件系统”服务在本地/云文件系统

我想在
laravel
中上传文件,我只使用本地服务器,不使用任何云存储。 从doc中,我找到了两种与文件上传相关的方法

  • 普通方法
    (请求::文件('file')->移动(dest,filename))
  • 使用
但我无法理解这些方法之间的实际区别

如果我用正常的方法

$file->move('path', $fileName);
这里应该是路径的位置,
存储/app
公共/uploads
(新)


如何使用
文件系统上传文件?

这两种方法的区别在于使用方法

您可以使用“文件系统”服务在本地/云文件系统上工作,例如创建、移动或删除文件。当然,您可以使用Storage::put()方法来存储上传的文件,但是您必须从请求中获取文件。因此,您通常只需使用$request->file('photo')->move($destinationPath);方法将文件移动到所需位置。文件系统服务本身并不负责处理上传。这就是请求的目的

关于你把文件放在哪里的问题你必须自己回答。存储文件的默认路径是storage/app。您可以将它们公开/上传,但不鼓励这样做,因为任何知道URL的人都可以下载文件。这实际上取决于文件的用途。如果它是一张个人资料图片,那么它可以公开/上传。如果文件是私有的,则不应将其放在存储/应用程序中。

只要PHP具有对该位置的写访问权限,“普通”方法允许您仅将上载的文件保存在您选择的任何位置的本地文件系统中。此方法只能用于“保存”操作,并且只能用于上载的文件

“文件系统”方法更灵活,因为它在您的写入位置上添加了一层抽象。文件系统配置存储在单独的配置中,对代码是透明的。您可以轻松地更改基础存储(例如从本地到云)或更改路径,而无需对代码进行任何更改。文件系统还为您提供了许多附加的助手方法来操作它存储的文件,如列出所有文件、检查是否存在、删除。另外一个优点是,它可以用于任何文件,而不仅仅是用户在当前请求期间上载的文件

回答您的第二个问题:您可以决定在哪里以普通方法和文件系统方法存储文件。在传递路径的常规方法中,在文件系统中,使用filesystems.php config配置路径

如何使用文件系统上传文件?您不使用文件系统上载文件,而是使用它保存上载的文件。上载过程是相同的,但不是调用$uploadedFile->move(),而是执行以下操作:

Storage::put('file key', file_get_contents(Request::file('file')->getRealPath()));