簡體   English   中英

用於管理特定Web應用程序中文件的體系結構

[英]Architecture for managing files within a specific web application

我正在使用Laravel 4(與Apache一起使用)來開發Web應用程序。 我需要一些(技術)建議/解決方案來設計應用程序的一部分

這是我這部分問題的背景:

在我的Web應用程序中,我需要存儲由不同用戶上傳的文件(最大150Mo的圖像或視頻)。 用戶可以與其他用戶共享其選擇的文件。 例如:“我上傳了image1.png,我只想與Bob和Alice共享。如果刪除image1.png,則Bob和Alice仍然必須可以訪問此文件,直到他們都不想使用它為止。不再(如果沒有用戶鏈接到該文件,則可能每天運行一批刪除它)。”。

問題:

  • 為了管理上傳的文件,我希望允許用戶上傳一些文件而不會阻止他。 他必須能夠在上傳過程中瀏覽我的Web應用程序的所有頁面並查看其狀態(例如,在進度欄中)。 我怎樣才能做到這一點? PHP腳本和Ajax是否足夠? 使用jQuery插件(如jQuery File Upload)可以做到這一點嗎?
  • 當前要存儲文件,我使用的是單個目錄。 另外,我使用Mysql數據庫建立圍繞文件管理的邏輯(例如:“ image1.png已由我上傳,並且其URL當前與Alice和Bob共享。他們可以下載”)。 目前,它工作正常。 只有Alice和Bob可以看到我的文件。 但是我不知道這是否是一個可以增長的應用程序的好方法(就文件和用戶而言)。 這是一個好的架構(單個目錄+數據庫)嗎? 還是我必須為每個用戶使用物理目錄?
  • 我可以針對我的應用程序獲得有關性能和優化的任何建議嗎?

任何幫助將不勝感激。 在此先感謝您,我的英語不好。

1)好主意/您必須在單獨的窗口(或彈出窗口)中進行上傳

該頁面必須保持打開狀態,直到上傳完成為止,如果您可以在頁面退出時將其暫停然后在加載下一頁后將其恢復到原來的位置,我會感到很驚訝(並且可能需要進行大量工作沒有那么多的好處); 除非您的應用程序包含在單個頁面中。 我曾經允許在上傳過程中使用后台應用程序,但最終導致許多意外事件,具體取決於用戶的行為,現在我在上傳過程中凍結了bo,它們等待着,更安全,沒有錯誤,沒有修復,沒有麻煩

2)主要取決於您是否必須遍歷/搜索文件系統中的文件,即不是從指向服務器上文件的數據庫查詢中進行

3)不,您不必為每個特定問題創建一個單獨的問題,但是您最好還是使用Google jquery優化

我,我想我會在數據庫表中存儲指向文件的指針,並使用系統將查詢結果緩存在文件中的json中(每次用戶刪除/添加文件時都會更新緩存)(即使用戶對數據庫的查詢很多,也仍然很低) +我將允許選擇多個文件+讓用戶等待上傳完成(以及服務器文件處理(如果有的話-可能是視頻編輯-太長了))-我不喜歡彈出窗口

為了管理上傳的文件,我希望允許用戶上傳一些文件而不會阻止他。 他必須能夠在上傳過程中瀏覽我的Web應用程序的所有頁面並查看其狀態(例如,在進度欄中)。 我怎樣才能做到這一點? PHP腳本和Ajax是否足夠? 使用jQuery插件(如jQuery File Upload)可以做到這一點嗎?

用戶離開頁面后,上傳將立即被取消。 但是,使用AJAX(為充分利用AJAX的優勢編寫的整個應用程序)可以做到這一點。 我不會那樣做。

當前要存儲文件,我使用的是單個目錄。 另外,我使用Mysql數據庫建立圍繞文件管理的邏輯(例如:“ image1.png已由我上傳,並且其URL當前與Alice和Bob共享。他們可以下載”)。 目前,它工作正常。 只有Alice和Bob可以看到我的文件。 但是我不知道這是否是一個可以增長的應用程序的好方法(就文件和用戶而言)。 這是一個好的架構(單個目錄+數據庫)嗎? 還是我必須為每個用戶使用物理目錄?

如果文件夾存儲大量文件,則性能會下降。
我會將文件存儲在子目錄中。

$hash = md5("image.png"); // let's say it produces "abcdefgh...." hash
$directory = "{$hash[0]}{$hash[1]}/{$hash[2]}{$hash[3]}/{$hash[4]}{$hash[5]}"; // then file/folder structure would be "ab/cd/ef/image.png";

這樣,您可以隨時從文件名獲取文件夾結構。

我可以針對我的應用程序獲得有關性能和優化的任何建議嗎?

請參閱先前的答案。 我無法提出任何其他“問題”-在實施之前不要制造問題;)

暫無
暫無

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

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