[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Загрузка нескольких файлов
gagger
Объясните мне, что я не так делаю.
Данные в $_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

там и примеры и .... всё подробно...

Спустя 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
Спасибо.

Спустя 25 минут, 21 секунда (14.05.2010 - 18:08) ApuktaChehov написал(а):
А я то что, вы спрасили я ответл.
И не сочтите за оскарбление, я, если чесно, был бы рад, когда начинал учиться, если бы мне сразу говорили где говнокод, где нет. Поверьте, это очень помогает.

P.S. Я как раз хотел написать, но phz меня опередил. wink.gif

Спустя 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 написал(а):
Да бы не создавать новую тему, хотел бы присоединиться к этой.

Вот, как указано выше, классный урок Загрузка файлов

Но... я вот подумал и решил усложнить себе задачу.

Что если потребуется добавить несколько, я буду говорить о картинках, фото.

Я сделал это так: к данной функции, добавил ещё один параметр, который указывает ключ массива.

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();
тоесть,
copy($_FILES["image"]["tmp_name"],"img/".basename($image));

и будет тебе счастье...

а если это не сработает, у тебя нет прав на создание файлов.
или же иная проблема в настройках.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.