簡體   English   中英

使用laravel5.1中的FileSystem上傳文件?

[英]File upload using FileSystem in laravel5.1?

我想在laravel上傳文件,我只使用本地服務器而不是任何雲存儲。 從doc,我發現了兩個與文件上傳相關的方法,

  • 普通方法(Request::file('file')->move(dest,filename))
  • 使用文件系統

但我無法理解這些方法之間的實際區別?

如果我使用普通方法,

$file->move('path', $fileName);

這里應該位於路徑, storage/apppublic/uploads (新)?

如何使用File System上傳文件?

只要PHP具有對該位置的寫入權限,“普通”方法允許您將所上載的文件僅保存在您選擇的任何位置的本地文件系統中。 此方法只能用於“保存”操作,並且僅用於上載的文件。

“filesystem”方法更靈活,因為它在您編寫的位置添加了一層抽象。 文件系統配置存儲在單獨的配置中,對代碼是透明的。 您可以輕松更改基礎存儲(例如,從本地到雲)或更改路徑,而無需對代碼進行任何更改。 文件系統還為您提供了許多其他輔助方法來操作它存儲的文件,例如列出所有文件,檢查存在,刪除。 另外一個優點是它可以用於任何文件,而不僅僅是用戶在當前請求期間上傳的文件。

回答你的第二個問題:你決定在普通和文件系統方法中存儲文件的位置。 在傳遞路徑的常規方法中,在文件系統中使用filesystems.php config配置路徑。

以及如何使用文件系統上傳文件? 您不使用文件系統上傳文件,而是使用它來保存上傳的文件。 上傳過程是相同的,但你不是調用$ uploadedFile-> move() ,而是:

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

這兩種方法的區別在於使用方法。

您可以使用“文件系統”服務在本地/雲文件系統上工作,如創建,移動或刪除文件。 當然,您可以使用Storage :: put()方法存儲上載的文件,但您必須從請求中獲取文件。 所以你通常只使用$ request-> file('photo') - > move($ destinationPath); http://laravel.com/docs/5.1/requests#files中指定的方法將文件移動到您希望的位置。 文件系統服務本身並不意味着處理上載。 這就是請求的目的。

關於放置文件的位置的問題是您必須自己回答的問題。 存儲文件的默認路徑是storage / app。 您可以將它們公開/上傳,但不鼓勵任何知道URL可以下載文件的人。 這實際上取決於文件的含義。 如果是個人資料圖片,則可以將其放入公開/上傳。 該文件是私有的,不應該放在那里,而是存儲/應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM