#php
#php
Вопрос:
привет, это функция, которая загружает изображение во временную папку и сохраняет местоположение в сеансе для дальнейшего использования
function uploadPhoto()
{
$rawImage = $_FILES['advPhoto'];
$uploader = new ImageUploader($rawImage);
$uploader->moveToProjectTempFolder();
//1 save the current image in sassion (save the attachment class inside seesion)
$uploader->saveInSession();
// $temperrary = $uploader->CurrentImgTemperraryLocation();
//2 send reponse the current image location
AjaxHelper::sendAjaxResponse("images/temp/" . $uploader->CurrentImgTemperraryLocation());
//create image tag and set the image source the "temp uploaded image path"
// done
//when the mail form is submitted
//loop through session array
//move the user uploaded/approved images to permanent folder
//save image information inside DB
}
вот функция, которая вызывает проблему, я хочу переместить изображение из временной папки в постоянное место, но php_move_uploaded_file() не работает в моем случае, я действительно не знаю, в чем проблема, пожалуйста, помогите мне, если вы знаете, в чем проблема. спасибо.
function saveAdv()
{
$advTitle = $_POST['advTitle'];
$advContent = $_POST['advContent'];
if (!empty($advTitle) amp;amp; !empty($advContent)) {
if (DataValidation::isOnlyPersianOrEnglish($advTitle) amp;amp;
DataValidation::isOnlyPersianOrEnglish($advContent)) {
DBconnection::insertRow('ADVERTISEMENT', ['title', 'Advertisement', 'advDate'],
[$advTitle, $advContent, date('y/m/d h:i:s')]);
// AjaxHelper::sendAjaxResponse("success");
$projectTemp = $_SESSION['ADVERTISEMENT']['Img'];
move_uploaded_file(
$projectTemp,
DOC_ROOT . "/images/advertisementImg/"
);
AjaxHelper::sendAjaxResponse($projectTemp);
}
} else {
AjaxHelper::sendErrorMessage(AjaxHelper::EMPTY_EMAIL_OR_PASSWORD);
}
}
Я не получаю никаких ошибок, которые я уже отлаживал много раз, но никаких предупреждений и вообще никаких ошибок, расположение папок полностью правильное, а также проблем с разрешениями нет.
move_uploaded_file () работает довольно хорошо на первом шаге, когда я перемещаю изображение из системного временного местоположения во временное местоположение моего проекта, но не работает, когда я хочу переместить изображение из временного местоположения проекта в постоянное местоположение.
Комментарии:
1. «Не работает» — это не сообщение об ошибке или заявление о проблеме. Мы не можем исправить «не работает» в коде, так же как механик не может починить машину, которая «не работает», без какой-либо другой информации о проблеме. Как это не работает? Что именно происходит при запуске кода? Чего вы ожидали вместо этого? Пожалуйста, предоставьте подробную информацию о сообщениях об ошибках, неожиданном поведении и т. Д.
2. Если вы не видите никаких ошибок или предупреждений, пожалуйста, убедитесь, что ваша установка PHP настроена на запись ошибок и предупреждений в файл — см. stackify.com/php-error-logs-guide если вам нужно знать, как это настроить. Когда вы это сделаете, снова запустите свой код и проверьте файл на наличие каких-либо полезных сообщений.
3. Я не получаю никаких ошибок, которые я уже отлаживал много раз, но никаких предупреждений и вообще никаких ошибок, и расположение папок полностью правильное, а также нет проблем с разрешениями, которые очень сбивают с толку ,
4. move_uploaded_file () работает довольно хорошо на первом шаге, когда я перемещаю изображение из системного временного местоположения во временное местоположение моего проекта, но не работает, когда я хочу переместить изображение из временного местоположения проекта в постоянное местоположение
5. У вас настроено ведение журнала ошибок, как я указал выше? Вот где вам следует искать, если вы не видите ошибок. Кроме того, move_uploaded_file вернет false, если произойдет сбой, и вы не проверяете это в своем коде.
Ответ №1:
move_uploaded_file()
предназначен только для перемещения файлов, которые только что были загружены в POST-запросе и хранятся во временном хранилище системы. В качестве документации (https://php.net/manual/en/function.move-uploaded-file.php ) утверждает, что сначала он проверяет, является ли файл допустимым загружаемым файлом, что означает, что он был загружен с помощью механизма HTTP POST upload PHP (это прямая цитата из документов). Если оно недопустимо по этому определению, оно завершается ошибкой.
Итак, если вы пытаетесь использовать move_uploaded_file()
для копирования файлов из других местоположений (не из системного временного местоположения), которые не были напрямую загружены в это местоположение в текущем запросе, тогда это не сработает. Используйте общие функции PHP для перемещения других файлов, используя rename()
функцию (см. https://www.php.net/manual/en/function.rename.php для получения подробной информации).