another_dream
@another_dream
Backend-разработчик, Laravel/ZF2/Yii2

Как реализовать загрузку файлов на сервер [php/apache]?

Стоит OpenServer. Форма загрузки файла написано корректно. Файл вроде бы и загружается, смотрю дамп, там все в порядке:
string(14) "H:\phpD394.tmp"
Но файла, как такового, там нет. В чем может быть проблема? В конфиге PHP правлю временную директорию - инфа из дампа меняется но файл не наблюдается. Все это происходит под виндой.
  • Вопрос задан
  • 8363 просмотра
Решения вопроса 1
v_decadence
@v_decadence
Разве я неправильно понимаю, что "по окончанию работы скрипта, в случае, если принятый файл не был переименован или перемещен, он будет автоматически удален из временной папки"? То есть вы должны использовать функцию move_uploaded_file, как и было предложено.
Ответ написан
Пригласить эксперта
Ответы на вопрос 6
@Nc_Soft
Без print_r($_FILES);
разговора не будет
Ответ написан
Комментировать
another_dream
@another_dream Автор вопроса
Backend-разработчик, Laravel/ZF2/Yii2
<?php
define('GW_UPLOADPATH', 'images/');
$name=$_POST['name'];
$score=$_POST['score'];
$pic = $_FILES['screenshot'];
$pic=move_uploaded_file($_FILES['screenshot'], GW_UPLOADPATH);
?>

Все верно? Файл забирается из формы, обрабатывается в PHP, переносится из временной в /images/ директорию, верно?
Но дамп "$pic" говорит:
bool(false)
Ответ написан
another_dream
@another_dream Автор вопроса
Backend-разработчик, Laravel/ZF2/Yii2
string(14) "H:\phpEB58.tmp"
Он так и должен сохранять файл или же имя должно соотвествовать файлу?
Ответ написан
Комментировать
another_dream
@another_dream Автор вопроса
Backend-разработчик, Laravel/ZF2/Yii2
@Nc_Soft , пожалуйста:
Array ( [screenshot] => Array ( [name] => WIN_20131201_052047.JPG [type] => image/jpeg [tmp_name] => H:\phpB65.tmp [error] => 0 [size] => 122294 ) )
Ответ написан
another_dream
@another_dream Автор вопроса
Backend-разработчик, Laravel/ZF2/Yii2
Хм...как Я понимаю, при попытке перемещения он ругается:
Warning: move_uploaded_file(C:/srv/OpenServer/domains/localhost/images/) [function.move-uploaded-file]: failed to open stream: Permission denied in C:\srv\OpenServer\domains\localhost\tmp\addscore.php on line 29

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'H:\phpABBE.tmp' to 'C:/srv/OpenServer/domains/localhost/images/' in C:\srv\OpenServer\domains\localhost\tmp\addscore.php on line 29
Ответ написан
another_dream
@another_dream Автор вопроса
Backend-разработчик, Laravel/ZF2/Yii2
?php

$name=$_POST['name'];
$score=$_POST['score'];
$uploads_dir = '/images';
$tmp_name = $_FILES["screenshot"]["tmp_name"];
$name = $_FILES["screenshot"]["name"];
move_uploaded_file($tmp_name, "$uploads_dir/$name");

if ($_POST['submit']==true) {
	$mysqli->query("INSERT INTO guitar VALUES(0, NOW(), '$name', '$score', '$pic')"); 
} 
?>

Папка существует. Все идеально для выполнения. Но все тот же:
Warning: move_uploaded_file(/images/WIN_20131204_232139.JPG) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\srv\OpenServer\domains\localhost\tmp\addscore.php on line 35

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'H:\php49F4.tmp' to '/images/WIN_20131204_232139.JPG' in C:\srv\OpenServer\domains\localhost\tmp\addscore.php on line 35
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы