2013-07-19 90 views
0

所以我創建了一個image.php文件與此代碼,並把它放在我的public_html文件夾:拉隨機圖像從文件夾上面的文件夾中的public_html

<?php 
header('Content-Type: image/jpeg'); 
readfile('home/folder/my image.jpg'); 
?> 

,然後我把這個代碼在HTML頁面中我的public_html文件夾:

<img src="/image.php"> 

當我加載頁面時,在瀏覽器中完美顯示了「my image.jpg」文件。所以這告訴我,我可以訪問我的public_html文件夾(這是一個專用服務器)上面的文件夾,它告訴我,我沒有問題在文件名中使用空格來呈現一個jpg文件。

所以現在我試圖從同一個文件夾中隨機抽取圖像,但似乎無法弄清楚。這是我正在做的,不工作。

我創建了這個代碼image.php文件,並把我的public_html文件夾:

<?php 

//Define Function to Select Random Image 
function random_pic($dir = '/home/folder') 
{ 
$files = glob($dir . '/*.jpg'); 
$file = array_rand($files); 
return $files[$file]; 
} 

//Select Random Image Path 
$randPic = random_pic('/home/folder'); 

//Output Random Image When image.php is called from html image requests 
header('Content-Type: image/jpeg'); 
readfile($randPic); 
?> 

,然後我把這個代碼在HTML頁面中我的public_html文件夾:

<img src="/image.php"> 

現在,當我用這個img標籤加載這個html頁面時,我什麼都沒有。沒有錯誤,沒有圖像,只有空白。我很欣賞任何人都可以提供的見解。

+1

調試步驟:檢查'glob()'實際上是否發現了antyhing(例如'var_dump($ files)')。檢查'random_pic()'是否實際返回一個路徑(例如'var_dump($ randPic)'),然後檢查readfile是否返回一個布爾值false(你不能真正var_dump,因爲瀏覽器會嘗試讀取轉儲文本作爲圖像數據)。 –

+0

做一個file_exists($ randPic);並echo $ randPic ...看看它是否有意義。 – Orangepill

+0

除了Marc所說的之外,我還會考慮在標頭中添加一個「no-cache」標誌,這樣它們每次都不會獲得相同的圖像。 或者,也可以不使用'readfile',而使用'302 Temporary Redirect'並直接指向圖像文件。 –

回答

0

爲什麼不使用絕對路徑,而不是

header('Content-Type: image/jpeg'); 
readfile('home/folder/my image.jpg'); 

這樣

// notice the absolute path prefix 
if(!is_file($image_path = '/home/folder/my image.jpg')){ 
    header('Content-Type: text/plain', 404); 
    echo 'Image file not found!'; 
} 

// We got a file, keep going... 
header('Content-Type: image/jpeg'); 
header('Content-Length: '.filesize($image_path)); 
readfile($image_path); 

die; // done here 

或者與__DIR__.'/path/to/image.jpg'使用相對路徑的當前目錄.php腳本。

+0

我只是想確保我明白。所以關於pulliing一個隨機圖像,而不是使用下面的代碼: header('Content-Type:image/jpeg'); readfile($ randPic); 我應該使用別的東西?它看起來像你從我的工作解決方案引用我的輸出代碼,而不是從我的非工作的隨機圖像解決方案中引用。如果我誤解了我的道歉。 – Bogarto

+0

@Bogarto你的代碼顯然很好。你需要''random_pic'函數內的'var_dump($ files)',並確保你看到任何由'glob'結果列出的東西。這就是爲什麼我認爲相對路徑可能是一個問題... – CodeAngry

0

您必須將safe_mode = off或配置open_basedir才能訪問images目錄。

相關問題