2010-06-20 76 views
0

我有一個鏈接在Windows上使用Apache進行本地測試的問題。最終鏈接的格式如下:使用Apache與Windows的圖像路徑

file:///C:/Documents and Settings/USUARIO/My Documents/xampp/htdocs/my_website/images/january/my_image.jpg 

圖像不顯示。但是,如果我直接從img標籤複製src並將其粘貼到瀏覽器(Firefox)中,圖像就會顯示出來。

我生成使用下面的代碼鏈接:

我定義使用的圖像目錄:define(IMAGE_DIR, dirname(__FILE__).'/images/');
然後我使用以下格式的路徑:

$imgPath = IMAGE_DIR.$month.$img; 
if($localServer) 
{ 
    $imgPath = str_replace('/','\\', $imgPath); 
    $imgPath = 'file:///'.$imgPath; 
} 

我是什麼我做錯了?

回答

2

您正在生成的圖像源使用從Web服務器加載的頁面中的file:// URL。文件URL指示瀏覽器直接從磁盤加載文件,而不向Web服務器發出請求。出於安全原因,Firefox和其他瀏覽器不允許Web服務器提供的頁面引用本地文件,因此不要顯示圖像。遠程訪問您的站點的人將無法訪問這些文件,因爲圖像源將是對其計算機上的路徑的引用。

要使圖像顯示出來,您需要更改圖像源以指向Web服務器上的位置,例如images/january/my_image.jpg/images/january/my_image.jpg

images/january/my_image.jpg將被web瀏覽器相對於被請求的頁面解釋。例如,如果圖像出現在頁面http://localhost/page1.php處,則瀏覽器將請求http://localhost/images/january/my_image.jpg。但是,如果圖像在http://localhost/subdir/page1.php的頁面上使用,則瀏覽器將請求http://localhost/subdir/images/january/my_image.jpg

/images/january/my_image.jpg將始終被解釋爲相對於網站的根目錄。網頁瀏覽器將要求http://localhost/images/january/my_image.jpghttp://localhost的任何頁面。

如果您需要引用另一臺Web服務器上的映像,例如http://otherhost/images/january/my_image.jpg,則還可以使用絕對URL。

+0

我用目錄名(__ FILE__)來定義的路徑,這樣,當我使用包括()的路徑包括配置文件不要在不同的目錄中更改。如果我使用define(IMAGE_DIR,'/ images /'),當將該配置文件包含在不同目錄中時,會不會遇到麻煩? – 2010-06-20 21:10:13

+0

@ sala_7不,您不會遇到任何不同的目錄問題。無論您的頁面所在的目錄如何,以'/開頭的路徑將始終指向Web服務器上的相同位置。 – 2010-06-20 22:23:50

+0

非常感謝!我想我對Web根目錄下包含文件夾的路徑感到困惑,它使用include()從其他目錄導入頁面部分 – 2010-06-21 08:07:07

0

這是更好地使用常量「DIRECTORY_SEPARATOR」代替「/」或「\」