СКрипт для загрузки файлов на сервер $maxsize - максим размер файла. PHP: $maxsize = 28320; if(!$_POST['submit']) { //print_r ($HTTP_POST_FILES) echo $error = ""; /* Это приведет к тому, что остальная часть сценария будет пропущена, и в броузере отобразится форма выгрузки файла */ } //Если файл не загружен и не существует ошибки если что удаляем временный файл if(!is_uploaded_file($_FILES['upload_file']['tmp_name']) AND !isset($error)) { $error = "<b>Вы должны отправить файл!</b><br /><br />"; //Удалить файл unlink unlink($_FILES['upload_file']['tmp_name']); } //ПРоверяем подходит ли по размеру if($_FILES['upload_file']['size'] > $maxsize AND !isset($error)) { $error = "<b>Файл не может быть более $maxsize байт</b><br /><br />"; unlink($_FILES['upload_file']['tmp_name']); } //ПРоверим на тип данных нам нужен jpeg или gif if($_FILES['upload_file']['type'] != "image/gif" AND $_FILES['upload_file']['type'] != "image/pjpeg" AND $_FILES['upload_file']['type'] != "image/jpeg" AND !isset($error)) { $error = "<b>Допускается загружать только файлы типа jpeg и gif</b><br /><br />"; unlink($_FILES['upload_file']['tmp_name']); } if(!isset($error)) { copy($_FILES['upload_file']['tmp_name'], "./load/".basename($_FILES['upload_file']['name'])); unlink($_FILES['upload_file']['tmp_name']); print "Спасибо за файл"; exit; } else { echo("$error"); } HTML: <html> <head> <title>Building a Form</title> </head> <body> <form action="<? echo(htmlspecialchars($_SERVER['PHP_SELF'])) ?>" method="post" enctype="multipart/form-data"> Выберите файл для загрузки:<br /> <input type="file" name="upload_file" size="80"> <br /> <input type="submit" name="submit" value="ОТправить"> </form> </body> </html> Проблема в том что unlink выдает ошибку Warning: unlink() [function.unlink]: Invalid argument line 30 Вы должны отправить файл! Я думаю что проблема что файл не отправляется в папку tmp но почему??? Cпасибо большое![/html]
Засобачил все равно не передает правда ошибка исчезла спасибо. и сообщение об ошибке что "ВЫ должны отправить файл вылетает" возможно не может найти его в tmp... Вопрос Какой destination надо указывать в move_upload_file?(Из tmp или из корня сервера?) И еще один если я буду передавать файл d.jpg и уберу unlink то смогу найти его в tmp своего сервера ?
у вас проверка уж очень мудреная какая-то вот загрузка файла. myfile это name того input'а, который отвечает за выбор файла PHP: <? $path='path/to/file/'.$_FILES['myfile']['name']; // желаемый путь после загрузки if(is_uploaded_file($_FILES['myfile']['tmp_name'])) { move_uploaded_file($_FILES['myfile']['tmp_name'], $path); echo "<br>{$_FILES['myfile']['name']}: uploaded."; }
Во-первых: Код (Text): unlink($_FILES['upload_file']['tmp_name']); Глупость. Не нужно его удалять вообще. Он сам автоматически удаляется, когда скрипт php завершает работу. Во-вторых: я пытался понять, почему не копируется файл и выдаёт ошибку, запустил этот код у себя, так вот у меня ошибок оно не выдавало и при наличии папки load файлы копировались. В-третьих: не правильно копировать загруженный файл командой copy. Специально для этого есть move_uploaded_file(). Вывод: если у тебя постоянно возникает эта ошибка - значит, возможно, ты показываешь не весь код, а ошибка где-то в другом месте. Либо php или сервер настроены так, что файлы не передаются.
в php.ini все разрешено. файл макс размера не превышает. sobachnik Где вы разместили папку load ? Там где home, usr, tmp или внутри папки home/Сервер/www/?Спасибо
В соответствии с вышеприведённым кодом, по идее, папка load должна находиться в той же папке, в которой находится скрипт, принимающий файл. Я как-то раз здорово обломался из-за использования относительных путей. Теперь всегда стараюсь использовать только абсалютный путь. В PHP путь к текущей папке (той, в которой находится скрипт) можно легко определить: PHP: <?php $path = dirname(__FILE__); ?> Теперь в переменной $path находится абсолютный путь к папке со скриптом. Советую пользоваться этим всегда, ибо бывает и такое, что file_get_contents('./dir/file') - не работает.
Sobachnik спасибо вам за помощь. получилось. Можно еще вопрос не по теме. Вы обучались самостоятельно по книжкам или получали образование? Я хотел бы тоже получить но в моем городе нету никаких специализирвоанных учереждений и курсов. а к дистанционным отношусь скептически(
В основном по книжкам. Начал с простой небольшой книжки для начинающих. Я не ставил перед собой задачи сразу (с малыми знаниями) пытаться сделать что-то большое сложное. Потом купил ещё одну книгу, большую и толстую, но тоже для начинающих. Потом купил книжку про php для профессионалов. Ну и по смежным тематикам - MySQL, HTML/CSS, JavaScript, Ajax - покупал и читал книги, разбираясь с примерами и т.д. Практически все книги читал от корки до корки. Также многое узнаётся из интернета - статьи, просмотр разных форумов - этого, например. Ну и, конечно, практика. А практики стало весьма много, как устроился работать web-программистом.