2010-10-22 59 views
0

我有一個網站,管理員可以登錄和上傳照片。所有的圖像被放置在一個目錄中,然後在另一個頁面上,我騎自行車瀏覽圖像並顯示它們。客戶詢問是否有方法移動圖像並按照他們想要的順序放置它們。需要允許用戶排列文件順序

現在看這個網站,我不知道什麼順序的文件甚至被顯示。它們絕對不是按文件名按字母順序排列的。

我基本上有2個問題

  • 是否有文件進行排序或使用SCANDIR抓住一個標準的方式?
  • 什麼是允許用戶排序​​照片的好方法?
+0

使用水珠(),夥計,而不是scandir。 – 2010-10-22 19:41:56

+0

我現在使用glob,但是我已經有了這個網站,而且我已經使用scandir開發了它。 – Catfish 2010-10-22 19:51:16

回答

2

它們的排序方式取決於文件系統,通常不保證一致。

您需要在某處存儲所需的訂單。我看到有3種方法可以做到這一點。

  1. 使用存儲所需順序和文件名的數據庫。然後,您可以獲得按順序排序的文件名列表。如果新項目添加到文件夾,它們最初不會有訂單。您需要在添加訂單時設置訂單。

  2. 按文件名軟文件。當用戶使用這些文件時,您需要重命名它們。最簡單的方法是按照他們的索引以所需的順序重新命名它們。

  3. 使用索引文件。這與數據庫選項類似,但在每個存儲排序信息的目錄中都有一個文本文件。當用戶更新訂單時,您可以將所有文件名以所需的順序放入索引文件中。然後您可以加載索引文件並按順序顯示文件。如果新文件不在索引文件中,您可以將其添加到最後。

+0

如果可能,我寧願不使用數據庫。如果我必須我會,但因爲我已經基本完成了網站,我寧願不必。 – Catfish 2010-10-22 17:13:12

+0

然後您將需要一些其他方式來存儲排序信息。如果您不能像我的第二個建議那樣更改文件名,則需要使用類似索引文件的內容。我爲解決這個問題添加了另一個解決方案。 – 2010-10-22 17:17:32

2

因爲在數據庫中存儲文件信息會產生冗餘,從而增加不可靠性,所以我會選擇特殊的文件命名協議。假設您有a.png和b.png,將它們存儲爲00001_b.png和00002_a.png。在用戶界面中顯示文件時:在掃描目錄後按字母順序排列文件,然後從名稱中刪除前綴。爲了簡單起見,請將前綴設爲固定長度。

P.S.重新排序很簡單;如果你想交換00002_a.png和00001_b.png你必須:

  • 命名00002_a.png到00001_a.png
  • 命名00001_b.png到00002_b.png