Локально, в PHP, когда я использую move_uploaded_file
для загрузки файлов (скажем, изображений), оба абсолютный а также родственник пути назначения работают.
После загрузки этих изображений в указанный целевой путь эти изображения можно отобразить только на веб-странице, используя родственник дорожка — абсолютный путь не сработает.
Зачем?!!
ОС: Windows 7 Ultimate
Версия PHP 7.1.1
IDE: среда IDE NetBeans 8.2
Структура проекта:
example
│
└───Source Files
│
└upload_display_example
│ images
│ │(empty)
│ └
│ display_photo.php
│ photo_upload.php
│
photo_upload.php
<?php
defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR);
// Both $absolute and $relative paths work
function get_path() {
// return $absolute = $_SERVER['DOCUMENT_ROOT'] . DS . 'example' . DS . 'upload_display_example' . DS . 'images' . DS;
return $relative = './images' . DS;
}
if (isset($_POST['submit'])) {
$tmp_path = $_FILES['file_upload']['tmp_name'];
$photo_name = $_FILES['file_upload']['name'];
$photo_path = get_path() . $_FILES['file_upload']['name'];
if (move_uploaded_file($tmp_path, $photo_path)) {
header("Location: display_photo.php?img=$photo_name");
die();
} else {
echo "<script>alert('Cannot move photo to permanent location.');</script>";
}
}
?>
<form action="photo_upload.php" enctype="multipart/form-data" method="POST">
<p><input type="file" name="file_upload" /></p>
<p><input type="submit" name="submit" value="Upload" /></p>
</form>
display_photo.php
<?php
defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR);
// Only $relative path will work
function get_path() {
// return $absolute = $_SERVER['DOCUMENT_ROOT'] . DS . 'example' . DS . 'upload_display_example' . DS . 'images' . DS;
return $relative = './images' . DS;
}
if (isset($_GET['img'])) {
$photo_name = $_GET['img'];
$src = get_path() . $photo_name;
echo "<img src='$src' width='200' height='200' />";
}
?>
<br />
<br />
<a href="photo_upload.php">Upload a new photo</a>
Задача ещё не решена.
Других решений пока нет …