Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему у меня не сохраняется файл?

☀︎Питруха☀︎ Мастер (1794), закрыт 2 месяца назад
Я делаю отправку файла обычным fetch потом принимаю его файлом php вот содержимое:
 //upload.php 

$uploaddir = '/images/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "Файл не содержит ошибок и успешно загрузился на сервер.\n";
} else {
echo "Возможная атака на сервер через загрузку файла!\n";
}

echo 'Дополнительная отладочная информация:';
print_r($_FILES);

?>
мне постоянно приходит ответ вот такой:
 //upload.php 
Возможная атака на сервер через загрузку файла!
Дополнительная отладочная информация:Array
(
[file] => Array
(
[name] => 13001.jpg
[full_path] => 13001.jpg
[type] => image/jpeg
[tmp_name] => /tmp/phpZanXdc
[error] => 0
[size] => 465169
)

)
что я не так делаю? Мне надо просто файл сохранить на сервере ( infinityfree)
Лучший ответ
Андрей Высший разум (465012) 3 месяца назад
Судя по выводу print_r($_FILES), информация о файле находится в $_FILES['file'].
А в коде ты обращаешься к несуществующему $_FILES['userfile'].
И, в результате, move_uploaded_file всегда возвращает ошибку.
☀︎Питруха☀︎Мастер (1794) 3 месяца назад
спасибо! сейчас попробую изменить эти названия
☀︎Питруха☀︎Мастер (1794) 3 месяца назад
не помогло. результат тот же самый....
Не подскажешь как просто сохранить загруженный файл средством php ?
Андрей Высший разум (465012) ☀︎Питруха☀︎, Твой код, взятый из официальной статьи, вполне правилен. Именно так файлы и загружаются. Основных подводных камней два: Путь к директории. Твоё $uploaddir = '/images/'; означает, что директория image находится в корне файловой системы. Что, вероятнее всего, совсем не так. Если поддиректория image находится в той же директории, что и файл upload.php, то должно быть так:
 $uploaddir = __DIR__ . '/images/'; 
Права доступа к image. PHP-скрипт запускается совсем не под тем пользователем, под которым директория image создавалась. И по умолчанию PHP-скрипт может из image читать, но не может в неё писать. Надо настроить права на запись - хотя бы командой chmod в консоли.
☀︎Питруха☀︎Мастер (1794) 3 месяца назад
Да, это сработало, файл наконец-то записался! Спасибо тебе большое! буду дальше изучать загрузку файлов.
Остальные ответы
Похожие вопросы