Intereting Posts
Подключение эскизов к изображениям, извлеченным с помощью php GAPI: не удалось аутентифицировать пользователя. Постоянное исправление PHP Копирование PHP-кода из учебника дает уведомления на моем компьютере отображать многоуровневое меню с базами данных в php Пометить людей в Facebook Post? laravel 4 -> получить имена столбцов Обрезаемая фатальная ошибка: объект класса mysqli_stmt не может быть преобразован в строку Как получить ответ на несколько пунктов цены на рынке Ошибка PHP htmlspecialchars Ошибка загрузки изображения Summernote PHP proc_open не будет работать – дает мне «Недостающий определитель дескриптора в массиве» Загрузить изображение с URL-адреса с помощью php-кода? Можете ли вы порекомендовать хорошую разработку графических диаграмм на основе php Gantt? Несколько OR в php if (), похоже, не реагируют должным образом. Тестируемые значения массива и все. Что я делаю не так? Выполнение команд оболочки с использованием скрипта PHP

Как обслуживать несколько изображений, которые находятся над корнем www в одной странице?

Я надеюсь предложить пользователям представленную пользователем галерею изображений. Я написал сценарий загрузки, который сохраняет файл над корнем www. Я знаю, что могу обслуживать файл, указав заголовок страницы, а затем используя readfile, однако я планирую бросать изображения внутри таблицы, которые будут отображаться с другой информацией, и не думаю, что заголовок / файл чтения является лучшим решением. Я думаю, может быть, символические ссылки, но я не уверен.

Каков наилучший способ достижения этого?

Вам понадобится сценарий, например getimage.php который отправляет заголовки изображений, а echo выводит его содержимое. Затем в вашем HTML вы просто используете его как <img src=''> в своем HTML. Единственной целью getimage.php является извлечение и вывод изображения. Он остается отдельным от любого PHP, который вы используете для создания HTML-кода, отправленного в браузер.

Кроме того, вы можете проверить, имеет ли пользователь действительный сеанс и разрешения на просмотр изображения в getimage.php а если нет, отправьте вместо него какое-то изображение с getimage.php доступа.

Содержимое getimage.php мало и просто:

 // Check user permissions if necessary... // Retrieve your image from $_GET['imgId'] however appropriate to your file structure // Whatever is necessary to determine the image file path from the imgId parameter. // Output the image. $img = file_get_contents("/path/to/image.jpg"); header("Content-type: image/jpeg"); echo($img); exit(); 

В вашем HTML:

 <!-- as many as you need --> <img src='getimage.php?imgId=12345' /> <img src='getimage.php?imgId=23456' /> <img src='getimage.php?imgId=34567' /> 

Затем становится задачей браузера вызывать getimage.php?imgId=12345 как путь к изображению. Браузер не знает, что он вызывает PHP-скрипт, а не изображение в веб-каталоге, доступном в Интернете.

Если сценарий запущен на сервере Unix, вы можете попытаться создать символическую ссылку в своем корневом каталоге, которая ссылается на каталог вне вашего веб-корня.

 ln -s /webroot/pictures /outside-of-webroot/uploads 

Если вы используете сервер Apache, вы также можете посмотреть mod_alias. Я слышал, что есть несколько проблем при использовании mod_alias и настройке его через .htaccess. К сожалению, у меня нет никакого опыта работы с mod_alias.

Что-то, что всегда хорошо срабатывало для меня, – это заставить пользователей загружать свои изображения непосредственно в мой mysql db. PHP будет кодироваться в base64 и хранить в блобе. Затем вы делаете что-то похожее на то, что сказал Майкл, чтобы получить и отобразить изображение. Я включил некоторый код из проекта, над которым я работал в 2008 году. Я бы не копировал его точно, если это метод, который вы хотите использовать, поскольку это старый код.

Это PHP для загрузки и хранения в БД. Очевидно, замените вашу информацию и подключитесь к своей собственной БД.

 <?php include("auth.php"); // uploadimg.php // By Tyler Biscoe // 09 Mar 2008 // Test file for image uploads include("connect.php"); include("include/header.php"); $max_file_size = 786432; $max_kb = $max_file_size/1024; if($_POST["imgsubmit"]) { if($_FILES["file"]["size"] > $max_file_size) { $error = "Error: File size must be under ". $max_kb . " kb."; } if (!($_FILES["file"]["type"] == "image/gif") && !($_FILES["file"]["type"] == "image/jpeg") && !($_FILES["file"]["type"] == "image/pjpeg")) { $error .= "Error: Invalid file type. Use gif or jpg files only."; } if(!$error) { echo "<div id='alertBox'> Image has been successfully uploaded! </div>"; $handle = fopen($_FILES["file"]["tmp_name"],'r'); $file_content = fread($handle,$_FILES["file"]["size"]); fclose($handle); $encoded = chunk_split(base64_encode($file_content)); $id = $_POST["userid"]; echo $_FILES["file"]["tmp_name"]; $default_exist_sql = "SELECT * FROM members WHERE id='".$id."'"; $default_result = mysql_query($default_exist_sql); $results = mysql_fetch_array($default_result); if(!$results["default_image"]) { $insert_sql = "UPDATE members SET default_image = '$encoded' WHERE id='". $id ."'"; mysql_query($insert_sql); } $sql = "INSERT INTO images (userid, sixfourdata) VALUES ('$id','$encoded')"; mysql_query($sql); } else { echo "<div id='alertBox'>". $error . "</div>"; } } ?> <br /> <font class="heading"> Upload images </font> <br /><br /> <form enctype = "multipart/form-data" action = "<?php $_SERVER['PHP_SELF']; ?>" method = "post" name = "uploadImage"> <input type = "hidden" name="userid" value = "<?php echo $_GET["userid"]; ?>" > <input id="stextBox" type="file" name="file" size="35"><br /> <input type="submit" name="imgsubmit" value="Upload"> </form> <?php include("include/footer.php"); ?> в <?php include("auth.php"); // uploadimg.php // By Tyler Biscoe // 09 Mar 2008 // Test file for image uploads include("connect.php"); include("include/header.php"); $max_file_size = 786432; $max_kb = $max_file_size/1024; if($_POST["imgsubmit"]) { if($_FILES["file"]["size"] > $max_file_size) { $error = "Error: File size must be under ". $max_kb . " kb."; } if (!($_FILES["file"]["type"] == "image/gif") && !($_FILES["file"]["type"] == "image/jpeg") && !($_FILES["file"]["type"] == "image/pjpeg")) { $error .= "Error: Invalid file type. Use gif or jpg files only."; } if(!$error) { echo "<div id='alertBox'> Image has been successfully uploaded! </div>"; $handle = fopen($_FILES["file"]["tmp_name"],'r'); $file_content = fread($handle,$_FILES["file"]["size"]); fclose($handle); $encoded = chunk_split(base64_encode($file_content)); $id = $_POST["userid"]; echo $_FILES["file"]["tmp_name"]; $default_exist_sql = "SELECT * FROM members WHERE id='".$id."'"; $default_result = mysql_query($default_exist_sql); $results = mysql_fetch_array($default_result); if(!$results["default_image"]) { $insert_sql = "UPDATE members SET default_image = '$encoded' WHERE id='". $id ."'"; mysql_query($insert_sql); } $sql = "INSERT INTO images (userid, sixfourdata) VALUES ('$id','$encoded')"; mysql_query($sql); } else { echo "<div id='alertBox'>". $error . "</div>"; } } ?> <br /> <font class="heading"> Upload images </font> <br /><br /> <form enctype = "multipart/form-data" action = "<?php $_SERVER['PHP_SELF']; ?>" method = "post" name = "uploadImage"> <input type = "hidden" name="userid" value = "<?php echo $_GET["userid"]; ?>" > <input id="stextBox" type="file" name="file" size="35"><br /> <input type="submit" name="imgsubmit" value="Upload"> </form> <?php include("include/footer.php"); ?> в <?php include("auth.php"); // uploadimg.php // By Tyler Biscoe // 09 Mar 2008 // Test file for image uploads include("connect.php"); include("include/header.php"); $max_file_size = 786432; $max_kb = $max_file_size/1024; if($_POST["imgsubmit"]) { if($_FILES["file"]["size"] > $max_file_size) { $error = "Error: File size must be under ". $max_kb . " kb."; } if (!($_FILES["file"]["type"] == "image/gif") && !($_FILES["file"]["type"] == "image/jpeg") && !($_FILES["file"]["type"] == "image/pjpeg")) { $error .= "Error: Invalid file type. Use gif or jpg files only."; } if(!$error) { echo "<div id='alertBox'> Image has been successfully uploaded! </div>"; $handle = fopen($_FILES["file"]["tmp_name"],'r'); $file_content = fread($handle,$_FILES["file"]["size"]); fclose($handle); $encoded = chunk_split(base64_encode($file_content)); $id = $_POST["userid"]; echo $_FILES["file"]["tmp_name"]; $default_exist_sql = "SELECT * FROM members WHERE id='".$id."'"; $default_result = mysql_query($default_exist_sql); $results = mysql_fetch_array($default_result); if(!$results["default_image"]) { $insert_sql = "UPDATE members SET default_image = '$encoded' WHERE id='". $id ."'"; mysql_query($insert_sql); } $sql = "INSERT INTO images (userid, sixfourdata) VALUES ('$id','$encoded')"; mysql_query($sql); } else { echo "<div id='alertBox'>". $error . "</div>"; } } ?> <br /> <font class="heading"> Upload images </font> <br /><br /> <form enctype = "multipart/form-data" action = "<?php $_SERVER['PHP_SELF']; ?>" method = "post" name = "uploadImage"> <input type = "hidden" name="userid" value = "<?php echo $_GET["userid"]; ?>" > <input id="stextBox" type="file" name="file" size="35"><br /> <input type="submit" name="imgsubmit" value="Upload"> </form> <?php include("include/footer.php"); ?> в <?php include("auth.php"); // uploadimg.php // By Tyler Biscoe // 09 Mar 2008 // Test file for image uploads include("connect.php"); include("include/header.php"); $max_file_size = 786432; $max_kb = $max_file_size/1024; if($_POST["imgsubmit"]) { if($_FILES["file"]["size"] > $max_file_size) { $error = "Error: File size must be under ". $max_kb . " kb."; } if (!($_FILES["file"]["type"] == "image/gif") && !($_FILES["file"]["type"] == "image/jpeg") && !($_FILES["file"]["type"] == "image/pjpeg")) { $error .= "Error: Invalid file type. Use gif or jpg files only."; } if(!$error) { echo "<div id='alertBox'> Image has been successfully uploaded! </div>"; $handle = fopen($_FILES["file"]["tmp_name"],'r'); $file_content = fread($handle,$_FILES["file"]["size"]); fclose($handle); $encoded = chunk_split(base64_encode($file_content)); $id = $_POST["userid"]; echo $_FILES["file"]["tmp_name"]; $default_exist_sql = "SELECT * FROM members WHERE id='".$id."'"; $default_result = mysql_query($default_exist_sql); $results = mysql_fetch_array($default_result); if(!$results["default_image"]) { $insert_sql = "UPDATE members SET default_image = '$encoded' WHERE id='". $id ."'"; mysql_query($insert_sql); } $sql = "INSERT INTO images (userid, sixfourdata) VALUES ('$id','$encoded')"; mysql_query($sql); } else { echo "<div id='alertBox'>". $error . "</div>"; } } ?> <br /> <font class="heading"> Upload images </font> <br /><br /> <form enctype = "multipart/form-data" action = "<?php $_SERVER['PHP_SELF']; ?>" method = "post" name = "uploadImage"> <input type = "hidden" name="userid" value = "<?php echo $_GET["userid"]; ?>" > <input id="stextBox" type="file" name="file" size="35"><br /> <input type="submit" name="imgsubmit" value="Upload"> </form> <?php include("include/footer.php"); ?> в <?php include("auth.php"); // uploadimg.php // By Tyler Biscoe // 09 Mar 2008 // Test file for image uploads include("connect.php"); include("include/header.php"); $max_file_size = 786432; $max_kb = $max_file_size/1024; if($_POST["imgsubmit"]) { if($_FILES["file"]["size"] > $max_file_size) { $error = "Error: File size must be under ". $max_kb . " kb."; } if (!($_FILES["file"]["type"] == "image/gif") && !($_FILES["file"]["type"] == "image/jpeg") && !($_FILES["file"]["type"] == "image/pjpeg")) { $error .= "Error: Invalid file type. Use gif or jpg files only."; } if(!$error) { echo "<div id='alertBox'> Image has been successfully uploaded! </div>"; $handle = fopen($_FILES["file"]["tmp_name"],'r'); $file_content = fread($handle,$_FILES["file"]["size"]); fclose($handle); $encoded = chunk_split(base64_encode($file_content)); $id = $_POST["userid"]; echo $_FILES["file"]["tmp_name"]; $default_exist_sql = "SELECT * FROM members WHERE id='".$id."'"; $default_result = mysql_query($default_exist_sql); $results = mysql_fetch_array($default_result); if(!$results["default_image"]) { $insert_sql = "UPDATE members SET default_image = '$encoded' WHERE id='". $id ."'"; mysql_query($insert_sql); } $sql = "INSERT INTO images (userid, sixfourdata) VALUES ('$id','$encoded')"; mysql_query($sql); } else { echo "<div id='alertBox'>". $error . "</div>"; } } ?> <br /> <font class="heading"> Upload images </font> <br /><br /> <form enctype = "multipart/form-data" action = "<?php $_SERVER['PHP_SELF']; ?>" method = "post" name = "uploadImage"> <input type = "hidden" name="userid" value = "<?php echo $_GET["userid"]; ?>" > <input id="stextBox" type="file" name="file" size="35"><br /> <input type="submit" name="imgsubmit" value="Upload"> </form> <?php include("include/footer.php"); ?> 

Следующий файл отображает файл:

 <?php // image.php // By Tyler Biscoe // 09 Mar 2008 // File used to display pictures include("connect.php"); $imgid = $_GET["id"]; $result = mysql_query("SELECT * FROM images WHERE imgid=" . $imgid . ""); $image = mysql_fetch_array($result); echo base64_decode($image["sixfourdata"]); echo $image["sixfourdata"]; ?> в <?php // image.php // By Tyler Biscoe // 09 Mar 2008 // File used to display pictures include("connect.php"); $imgid = $_GET["id"]; $result = mysql_query("SELECT * FROM images WHERE imgid=" . $imgid . ""); $image = mysql_fetch_array($result); echo base64_decode($image["sixfourdata"]); echo $image["sixfourdata"]; ?> 

Затем:

 <img src="image.php?id=your_img_id">