簡體   English   中英

將圖像鏈接到PHP文件

[英]Linking an image to a PHP file

首先是一些歷史記錄:最近完成了一個應用程序,該應用程序允許我上傳圖像並將其存儲在目錄中,並且還將該文件的信息存儲在數據庫中。 數據庫存儲位置,名稱,並為其指定一個ID(auto_increment)。

好的,所以我現在要做的就是允許人們將圖像插入帖子中。 提出一些最佳方法的想法,因為我設計的應用程序允許人們移動文件,並且我不希望如果將圖像移動到其他目錄中,帖子中的圖像也不會損壞(因此存儲標識)。

我想做的是鏈接到圖像時,而不是直接鏈接到文件,而是這樣鏈接它:

<img src="/path/to/functions.php?method=media&id=<IMG_ID_HERE>" alt="" />

因此,它將獲取ID,搜索數據庫,然后從那里確定mime類型和不是MIME類型,然后吐出圖像。

確實,我的問題是:這是最有效的方法嗎? 請注意,在單個頁面上可能有3到30張圖像,所有圖像都調用了此功能。

只要知道由PHP和Web服務器配置的內存限制,這樣做就可以了。 (盡管僅通過首先接收文件就會遇到這些問題)

否則,如果您嚴格要求僅用於圖像,則采用Mike B的方法可能會更有效。 設計一個靜態區域,然后將圖像放在那里,然后將這些位置記錄在與它們相關的帖子的記錄中。 它的工作量減少了,也無需擔心...。我敢打賭,您的Web服務器在提供文件方面比大多數開發人員的自定義應用程序代碼要好。

通常,我建議保持圖像的src靜態(而不是php腳本)。 但是,如果要允許用戶在文件系統中移動他們,則需要一種跟蹤他們的方法

某種形式的緩存將有助於減少獲取每個映像的文件系統位置所需的數據庫調用數量。 在緩存上放置不確定的TTL並在移動圖像時使之失效應該很容易。

我認為您不必為此擔心,您計划的內容聽起來不錯。

但是,如果您想盡量減少請求或執行其他操作,則可以執行以下操作:當某人將圖像嵌入帖子中時,請使用一些特殊字符序列替換錨標記,例如[MYIMAGE=1234]或類似的內容。 然后,在查看包含一個或多個帖子的頁面時,搜索所有帖子以查找所有[MYIMAGE=]序列,查詢數據庫以獲取所有圖像的位置,然后輸出帶有[MYIMAGE=]的帖子序列替換為適當的錨標記。 您可能會或可能不想確保用戶不能直接將[MYIMAGE=]標簽添加到其提交的內容中。

您所建議的方法將起作用,並且可以說是最好的解決方案,但是我應該警告您,我之前已經嘗試過類似的方法,並且在負載下它完全崩潰了。 數據庫似乎正在跟上,但是腳本將開始超時,並且圖像不會到達。 這可能取決於某些特定的服務器配置,但需要牢記。

根據對運行服務器的訪問權限,只要用戶移動文件,就可以創建符號鏈接。 有點雜亂,但是它將快速可靠,並且如果用戶將文件移動到另一個文件所在的位置,它還將處理沖突。

使用Hammerite建議的格式,並使用[MYIMAGE=1234]標簽(或類似的標簽)。

然后,您可以在顯示之前獲取id-path映射,並用直接鏈接到圖像的適當標簽替換[MYIMAGE ]標簽。 這將比使用php輸出圖像產生更好的性能。

您甚至可以完全繞開數據庫,而只需使用諸如/images/hash(IMAGEID).jpg類的圖像路徑。 (如果文件格式不同,請使用[MYIMAGE=1234.png] ,因此您可以在不進行數據庫調用的情況下附加png / jpg /任何內容)

如果需要更改圖像位置,輸出方法或其他任何方法,則只需更改[MYIMAGE]標簽轉換為完整文件路徑的方法。

暫無
暫無

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

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