2009-06-22 51 views
2

如何訪問和顯示位於應用程序文件夾外部的圖像?比方說,我有一個存儲所有圖像和其他文件類型的文件目錄,並且此文件目錄位於不同的驅動器上,然後位於我的應用程序文件夾中。對於某些文件類型(如.pdf,.doc,我想提示用戶下載這些文件)。訪問和顯示圖像/提示文件下載位於應用程序文件夾外部

據我所知,不可能將絕對路徑放在<img src屬性中,即img src="D:\\file directory">不起作用。並且我想限制登錄用戶的訪問只有

我使用PHP作爲我的服務器端語言。

備註:<img src="file:/// .../>won't work in Firefox。請參閱comments

編輯:由於只有經過身份驗證的用戶可以訪問這些圖像,並且由於我有一個index.php來檢查所有傳入的請求,過濾未經過身份驗證的用戶,所以我不認爲創建Apache Alias會起作用。

這是我的conf文件的例子:

NameVirtualHost *:80 
    <VirtualHost *:80 > 
    ServerName pmmenu.businessjob.net 
    DocumentRoot "D:\web" 
    DirectoryIndex index.html index.php 
    <Directory "D:\web"> 
     AddDefaultCharset UTF-8 
     Order Deny,Allow 
     Allow from all 
     RewriteEngine on 
     RewriteBase/
     RewriteRule ^$ index.html [QSA] 
     RewriteRule ^([^.]+)$ $1.html [QSA] 
     RewriteCond %{REQUEST_FILENAME} !-f 

     # no, so we redirect to our front web controller 
     RewriteRule ^(.*)$ index.php [QSA,L] 
    </Directory> 
    </VirtualHost> 
+0

您能否澄清 - 存儲在瀏覽器可訪問的文件系統中的圖像? (即本地驅動器,Windows文件和打印共享共享等) – Quentin 2009-06-22 11:53:12

+0

該應用程序位於C :,而圖像位於D.因此,圖像應該可供瀏覽器訪問。 – Graviton 2009-06-22 12:06:45

回答

6

我覺得你錯過了這裏的基本概念。所有的HTML都被解釋爲客戶端。每個圖像都由您的訪問者的瀏覽器單獨下載。由於您的訪問者只能訪問這些公開的文件,因此「file:/// something」不適用於他們,因爲這會要求他們的瀏覽器訪問本地(他們)的文件系統,該文件系統將被阻止或找不到請求因爲它沒有存儲在磁盤上。

因此,您將不得不發佈這些圖片,並通過http訪問它們,以便您的訪問者看到它們。您可以通過創建子域或虛擬目錄來完成此操作。

由於您只希望經過身份驗證的用戶能夠看到它們,您還可以創建一個php文件來檢查用戶是否已通過身份驗證,例如,像這樣:

if(user_is_authenticated()){ 
    $pathToFile = "d:\images\myimage.jpg"; 
    $handle = @fopen($pathToFile, "rb"); 
    $contents = @fread($handle, filesize($pathToFile)); 
    @fclose($handle); 
    //sent appropriate header 
    header('Content-type: image/jpeg'); 
    echo $contents; 
} 

但是你必須要注意,此腳本會一直讀取整個圖像,然後打印出來,這是一個巨大的開銷。

1

嘗試創建保存圖像的文件夾的虛擬目錄,並用它作爲離開鏈接到文件夾中。如果使用IIS(虛擬目錄),如果apache(虛擬主機)。有很多的教程在谷歌

0

我不能在此刻測試這兩種理論,但我敢肯定,你可以在IMG SRC鏈接到一個PHP腳本,或者:

  • 用途GD製作動態版本的圖像,或者以您強制下載文件的相同方式將其下載到瀏覽器。
+0

使用gd並下載到瀏覽器...任何網址或代碼?謝謝。 – Graviton 2009-09-28 07:02:33

+0

請參閱我的更新回答 – middus 2009-09-28 07:30:34

相關問題