我有一個img
標記,其中定義了一個src
值。不過,我不想顯示這個值,因爲它會影響我的服務器。我被推薦使用虛擬URL:IMG標記引用了一個URL,但是在這種方案中,URL是虛擬URL:/uploads/myuser/mypict.jpg不會直接映射到映像,而是一個重寫規則會將此URL作爲參數傳遞給/uploads.php?url=myuser/mypict.jpg腳本,並且此腳本將具有訪問和發送Web根目錄之外的文件內容的能力(Web服務器根目錄不適用於腳本的文件處理功能)。 Source如何處理img標籤中的虛擬URL?
但我不明白img
標記如何訪問PHP腳本,以及該腳本如何顯示img
標記中的圖像。
任何想法,我怎麼能實現它?
更新:
我會給一個答覆標記所有的你,......但是我不能。 我終於找到了一種不帶任何參數的腳本調用方法,因爲圖像的名稱和路徑存儲在數據庫中。我與Symfony2的工作,所以我給我的特殊解決方案:
我只是做一個枝杈模板:
<img src="{{ path('acme_home_seeImage') }}" width="{{ image.width }}" height="{{ image.height }}">
,並添加路徑:
acme_home_seeImage:
pattern: /seeImage
defaults: { _controller: AcmeHomeBundle:Home:seeImage}
然後,當加載頁面時,所述img
標籤觸發seeImageAction()
方法,可處理下面的代碼:
public function seeImageAction()
{
if(!isset($_SESSION)) session_start();
header('Content-type: image/png');
if(isset($_SESSION['id'])) {
//call to image in database
$em = $this->getDoctrine()->getEntityManager();
$image = $em->getRepository('AcmeHomeBundle:Image')->find($_SESSION['id']);
readfile($image->getPath());
} else {
readfile('public/img/default.png');
}
}
,因爲圖像與客戶端的會話ID相關聯。 就是這樣!現在,我可以將Document Root
以外的上傳目錄成功,並且我的上傳路徑保持隱藏狀態。