Данные в $_FILES попадают, ошибка где то в if (copy())
Причем ошибку саму то не отображает, скрипт отрабатывает и отвечает - ошибка загрузки фото.
if($_FILES["image"]["size"] > 7000)
{
echo ("Размер файла превышает 7 мегабайт");
exit;
}
$image = $_FILES['image']['name'];
$image1 = $_FILES['image2']['name'];
$image2 = $_FILES['image3']['name'];
$image3 = $_FILES['image4']['name'];
$image4 = $_FILES['image5']['name'];
if(copy($_FILES["image"]["tmp_name"],"img/".$image) and
copy($_FILES["image2"]["tmp_name"], "img/".$image1) and
copy ($_FILES["image3"]["tmp_name"], "img/".$image2) and
copy($_FILES["image4"]["tmp_name"], "img/".$image3) and
copy($_FILES["image5"]["tmp_name"], "img/".$image4))
{
echo("фото успешно загружено <br>");
}
else echo("Ошибка загрузки фото");
P/S Если кому то было бы не лень покажите более изящное решение.
Спустя 17 минут, 33 секунды (14.05.2010 - 17:29) phz написал(а):
Вообще-то для загрузки испол. функция http://php.net/manual/en/function.move-uploaded-file.php
И для загрузки нескольких файлов читайте мануал http://php.net/manual/en/features.file-upload.multiple.php
там и примеры и .... всё подробно...
И для загрузки нескольких файлов читайте мануал http://php.net/manual/en/features.file-upload.multiple.php
там и примеры и .... всё подробно...
Спустя 5 минут, 30 секунд (14.05.2010 - 17:35) gagger написал(а):
Ага...буду читать матчасть, а вот таким способом как пытался сделать я, это не решается?
Спустя 1 минута, 30 секунд (14.05.2010 - 17:36) ApuktaChehov написал(а):
Это, уважаемый, говнокодом попахивает.
Спустя 1 минута, 7 секунд (14.05.2010 - 17:38) phz написал(а):
И почитайте интересную статью http://irbis-team.com/15/13/2
Спустя 4 минуты, 56 секунд (14.05.2010 - 17:42) gagger написал(а):
ApuktaChehov Не знаю чем это попахивает уважаемый, я пришел сюда, что бы мне подсказали. Так как ранее я с такими задачами не сталкивался, вместо того что бы умничать писали бы по делу без ехидства или воздержались бы вовсе.
phz
Спасибо.
phz
Спасибо.
Спустя 25 минут, 21 секунда (14.05.2010 - 18:08) ApuktaChehov написал(а):
А я то что, вы спрасили я ответл.
И не сочтите за оскарбление, я, если чесно, был бы рад, когда начинал учиться, если бы мне сразу говорили где говнокод, где нет. Поверьте, это очень помогает.
P.S. Я как раз хотел написать, но phz меня опередил.
И не сочтите за оскарбление, я, если чесно, был бы рад, когда начинал учиться, если бы мне сразу говорили где говнокод, где нет. Поверьте, это очень помогает.
P.S. Я как раз хотел написать, но phz меня опередил.

Спустя 6 часов, 6 минут, 28 секунд (15.05.2010 - 00:14) agentor написал(а):
Цитата (gagger @ 14.05.2010 - 14:35) |
Ага...буду читать матчасть, а вот таким способом как пытался сделать я, это не решается? |
phz, вым показал очень хороший пример..я кстати когда то по таким примером и делал мультизагрузку фото..вам же надо не только просто тупо зрузить на сервер а ещё и проверять файлы на валидность - каждую и.т.д..
Спустя 15 часов, 59 минут, 49 секунд (15.05.2010 - 16:14) gagger написал(а):
Спасибо всем, задача решена.
Спустя 26 минут, 35 секунд (15.05.2010 - 16:41) Семён написал(а):
...
Спустя 1 час, 13 минут, 41 секунда (15.05.2010 - 17:54) glock18 написал(а):
ApuktaChehov
Думаю, тебе действительно стоит отвечать по делу.
Думаю, тебе действительно стоит отвечать по делу.
Цитата (ApuktaChehov @ 14.05.2010 - 15:08) |
И не сочтите за оскарбление, я, если чесно, был бы рад, когда начинал учиться, если бы мне сразу говорили где говнокод, где нет. Поверьте, это очень помогает. |
Так или иначе само выражение "говнокод" не несет никакой информации кроме той, которая содержится в двух корнях этого слова. полагаю, что услышать бы хотелось в качестве критики что-то более адекватное и аргументированное.
PS: замечаю за тобой это уже не первый раз, думаю пора задуматься над этим.
Спустя 1 месяц, 19 дней, 23 часа, 5 минут, 59 секунд (5.07.2010 - 17:00) Evilsoul написал(а):
Да бы не создавать новую тему, хотел бы присоединиться к этой.
Вот, как указано выше, классный урок Загрузка файлов
Но... я вот подумал и решил усложнить себе задачу.
Что если потребуется добавить несколько, я буду говорить о картинках, фото.
Я сделал это так: к данной функции, добавил ещё один параметр, который указывает ключ массива.
А на выводе, я прошёл по массиву так:
А вот вопрос: А как сделать так, чтобы юзер, допустим из 5 полей (input), ввел только два, а остальные 3 на сервер или в базу загрузились стандартным по умолчанию (допустим надписью фото)?
Вот, как указано выше, классный урок Загрузка файлов
Но... я вот подумал и решил усложнить себе задачу.
Что если потребуется добавить несколько, я буду говорить о картинках, фото.
Я сделал это так: к данной функции, добавил ещё один параметр, который указывает ключ массива.
function uploadHandle($max_file_size = 1000, $valid_extensions = array(), $upload_dir = '.', $i = 0)
{
$error = null;
$info = null;
$max_file_size *= 1024;
if ($_FILES['userfile']['error'][$i] === UPLOAD_ERR_OK)
{
// проверяем расширение файла
$file_extension = pathinfo($_FILES['userfile']['name'][$i], PATHINFO_EXTENSION);
if (in_array($file_extension, $valid_extensions))
{
// проверяем размер файла
if ($_FILES['userfile']['size'][$i] < $max_file_size)
{
$destination = $upload_dir .'/' . $_FILES['userfile']['name'][$i];
if (move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $destination))
$info = 'Файл успешно загружен';
else
$error = 'Не удалось загрузить файл';
}
else
$error = 'Размер файла больше допустимого';
}
else
$error = 'У файла недопустимое расширение';
}
else
{
// массив ошибок
$error_values = array(
UPLOAD_ERR_INI_SIZE => 'Размер файла больше разрешенного директивой upload_max_filesize в php.ini',
UPLOAD_ERR_FORM_SIZE => 'Размер файла превышает указанное значение в MAX_FILE_SIZE',
UPLOAD_ERR_PARTIAL => 'Файл был загружен только частично',
UPLOAD_ERR_NO_FILE => 'Не был выбран файл для загрузки',
UPLOAD_ERR_NO_TMP_DIR => 'Не найдена папка для временных файлов',
UPLOAD_ERR_CANT_WRITE => 'Ошибка записи файла на диск'
);
$error_code = $_FILES['userfile']['error'][$i];
if (!empty($error_values[$error_code]))
$error = $error_values[$error_code];
else
$error = 'Случилось что-то непонятное';
}
return array('info' => $info, 'error' => $error);
}
А на выводе, я прошёл по массиву так:
foreach ($_FILES['userfile']['name'] as $var => $val)
{
$message = uploadHandle(200, $extensions, $upload_dir, $var);
}
А вот вопрос: А как сделать так, чтобы юзер, допустим из 5 полей (input), ввел только два, а остальные 3 на сервер или в базу загрузились стандартным по умолчанию (допустим надписью фото)?
Спустя 1 минута, 56 секунд (5.07.2010 - 17:02) Evilsoul написал(а):
Сразу добавлю, проблема с многомерными массивами, не могу сообразить как пустые empty заменить тем что хочешь.
Спустя 5 часов, 42 минуты, 30 секунд (5.07.2010 - 22:45) MatrixGod написал(а):
gagger
возьми переменные $image в basename();
тоесть,
и будет тебе счастье...
а если это не сработает, у тебя нет прав на создание файлов.
или же иная проблема в настройках.
возьми переменные $image в basename();
тоесть,
copy($_FILES["image"]["tmp_name"],"img/".basename($image));
и будет тебе счастье...
а если это не сработает, у тебя нет прав на создание файлов.
или же иная проблема в настройках.