Поэтому я создал файл image.php с этим кодом и поместил его в свою папку 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">
Теперь, когда я загружаю эту html-страницу с этим тегом img, я ничего не получаю. Ни ошибки, ни изображения, ничего, кроме пробелов. Я ценю любое понимание, которое может предоставить любой.
glob()
действительно находит ничего (например,var_dump($files)
). Убедитесь, чтоrandom_pic()
на самом деле возвращает путь (например,var_dump($randPic)
), а затем убедитесь, что readfile не возвращает логическое значение false (которое вы на самом деле не можете использовать var_dump, потому что браузер попытается прочитать текст дампа как данные изображения). - person Marc B   schedule 20.07.2013readfile
вы можете использовать302 Temporary Redirect
и указывать непосредственно на файл изображения. - person Mr. Llama   schedule 20.07.2013