2012-07-02 60 views
1

我是php/mysql新手。我試圖通過URL(圖像位置)在我的數據庫中存儲圖像,此時我的php代碼將圖像存儲在名爲上傳目錄的文件夾中。這是不安全的,所以我想把網址放在數據庫中。我的代碼是基於這個IMAGEUPLOAD-WEBSITE這裏是我的代碼生成的URL例如:將圖像URL存儲在數據庫和檢索過程中

http://www.example.com/imageupload/uploads/medium/uniqueimagename.jpg

  1. 我將如何構建一個將存儲URL的有效的表?應該用Varchar嗎?
  2. 如何從我的數據庫中檢索此URL並顯示圖像?在數據庫中的文件名或原始網址的PHP查詢?

回答

2

1. How would i construct a valid table that will store URL's? Should it be with Varchar?

我不會URL的完整路徑存儲到數據庫中。所以,如果您有:

http://www.example.com/imageupload/uploads/medium/uniqueimagename.jpg

我只會店:

size: 2 (medium) 
name: uniqueimagename 
ext: jpg 

2. How can I retrieve this url from my database and display the image? php query of the filename in the database or original url?

只是從數據庫讀取數據,並把原始數據在你的HTML

+0

+1但這隻適用於他控制範圍內的圖片。如果他的網址是外部資源,那麼這將不適用。如果有某種內部/外部資源的組合,那麼他將不得不編碼以辨別兩者之間的關係。 – Matthew

+0

因此,他必須製作外部資源的副本,以防止他的網站依賴太多的外部資源。使它更容易緩存 –

+0

我通常會同意,但這很難聲稱,因爲我們無法確定他的URL存儲目的。也許這是他*唯一的意圖*鏈接到外部的圖像來源......鏈接聚合肯定不是不尋常的(儘管它可能會被忽視)。甚至可能是圖像的本地複製/存儲可能違反某些法律。我不知道,你也不知道。你的解釋很好,當然也適用於內部存儲。我只是在評論它何時可能不適當的可能性。 – Matthew

2

如果您打算的存儲任何圖像URL(而不是隻是你自己的),那麼你可能是安全的,並通過HTTP標準字段設置爲根據URL的長度的限制VARCHAR(2000)

請參閱以下內容:
What is the maximum length of a URL in different browsers?

至於檢索和顯示圖像,你可以簡單地得到,你的DB值(根據您的設計中的一些關鍵),並使用查詢作爲結果的圖片來源網址。

編輯:下面是這個主題的一個很好的探索:
Storing Images in DB - Yea or Nay?

+0

非常感謝您對此也有幫助 – techAddict82

1

最好的辦法是在成功上傳時使用PHP重命名文件。將其命名爲容易檢索的東西(某種類型的ID)。將其存儲在數據庫中,或存儲整個路徑。使用PHP查詢文件名或ID,然後輸出完整路徑。將列設置爲VARCHAR(2000)將適用於所有情況,但完全沒有必要。如果您使用的是ID而不是抽出的文件名,則可以縮短文件名。