Forum Webscript.Ru

Программирование => PHP => Тема начата: RelaX от 26 Ноября 2002, 09:37:40

Название: Загрузка на сервер 2х и более файлов
Отправлено: RelaX от 26 Ноября 2002, 09:37:40
Нашел в интернете код загрузки файлов на сервер:
/* Куда сохраняем файлы */
$store_dir=\'./\';

/* Если нам не передали файл, то покажем форму */
if (!$user_file) {
?>
" method="post" enctype="multipart/form-data">


}
/* Если передали файл */
else {
/* Проверим все ли правильно */
if (is_uploaded_file($user_file)) {
/* Переместим файл */
move_uploaded_file($user_file, $store_dir.$user_file_name);
/* Скажем об этом */
print "Спасибо за файл
\\n";
}
/* Если не правильно */
else {
print "Не корректные данные
 \\n";
}
}
?>


при загрузке одного файла - все работает. Доработал код для загрузки двух файлов - появились проблемы.
Вот код доработанного файла:

форма:

Файл 1

Файл 2



сам файл 2.php


$store_dir=\'./\';

if (is_uploaded_file($user_file)) {

move_uploaded_file($user_file, $store_dir.$user_file_name);

print "Спасибо за файл 1
\\n";
}

if (is_uploaded_file($user_file2)) {

move_uploaded_file($user_file2, $store_dir.$user_file_name2);

print "Спасибо за файл 2
\\n";
}

else {
print "Не корректные данные
 \\n";
}

?>

После загрузки появляется ошибка:
Warning: Unable to create \'./\': Is a directory in /home/web/upload/1.php on line 16

Warning: Unable to move \'/tmp/phpy30guO\' to \'./\' in /home/web/upload/1.php on line 16

первый фал нормально загружается, а второй не загружается. Что надо добавить/изменить в скрипте?
Название: Загрузка на сервер 2х и более файлов
Отправлено: voodoo от 26 Ноября 2002, 11:31:35
$user_file2_name
Название: Загрузка на сервер 2х и более файлов
Отправлено: alex007 от 10 Апреля 2004, 00:53:26
Что бы не повторяться по темен задам я свой вопрос здесь, да и получше пример чем RelaX.

Существует форма c 10 файлами для загрузки:













































Image:
Image:
Image:
Image:
Image:
Image:
Image:
Image:
Image:
Image:



Есть также обрабатывающий php код:

$images_dir = "image/";
$server_image_dirlocation = $serverroot.$images_dir;

for ($img_files=0; $img_files < count($image_file); $img_files++) {

if ($_FILES[\'image_file\'][\'tmp_name\'][$img_files] !="") copy($_FILES[\'image_file\'][\'tmp_name\'][$img_files], $server_image_dirlocation . $_FILES[\'image_file\'][\'name\'][$img_files]);

$image_loc = $server_image_dirlocation.$_FILES[\'image_file\'][\'name\'][$img_files];
$file_name = $_FILES[\'image_file\'][\'name\'][$img_files];
$image_file_type = $_FILES[\'image_file\'][\'type\'][$img_files];
$filesize =  (($_FILES[\'image_file\'][\'size\'][$img_files])/1024);

//узнаю размер фоток для дальнейшей операции
$size=getimagesize("$image_loc");
$new_width=$size[0];
$new_hieght=$size[1];

//далее делаю своё дело
}
 

Все работает нормально когда пользователь загружает 10 файлов, но когда меньше 10 файлов/фоток, то выскакивает ошибка что не может узнать размер фотки (тоесть пустого поля в форме).

Как исправить так что бы не выскакивало не чего при загрузке меньше 10 файлов, просто облазил много чего так и не нашел решения.
Название: Загрузка на сервер 2х и более файлов
Отправлено: Меняздесьдавнонет от 10 Апреля 2004, 08:23:54
гы.
это ж что надо было облазить, чтобы не найти, что
во-первых, что массив _FILES надо перебирать через foreach. Ну, или хотя бы перебирать фором не жестко забитое число, а размер массива.
а во-вторых, после if ($_FILES[\'image_file\'][\'tmp_name\'][$img_files] !="")  поставить фигурную скобку и дальнейшие действия производить только если имя файла есть.
А так получается, что если файла нету, то мы его не копируем, но все остальные действия производим :-)


Интересно, а закрыть фигурную скобку товарищ сам догадается? %)
Название: Загрузка на сервер 2х и более файлов
Отправлено: alex007 от 10 Апреля 2004, 15:56:24
RomikChef
спасибо.

Цитировать
Интересно, а закрыть фигурную скобку товарищ сам догадается?

Куды я денусь...

P.S. Заметил два последних предложения добавил -:)
Название: Загрузка на сервер 2х и более файлов
Отправлено: AlieN от 12 Апреля 2004, 11:19:55
Цитировать
Как исправить так что бы не выскакивало не чего при загрузке меньше 10 файлов, просто облазил много чего так и не нашел решения.

if(is_uploaded_file()){...}
Название: Загрузка на сервер 2х и более файлов
Отправлено: alex007 от 12 Апреля 2004, 15:03:15
AlieN
да уже работает без проблем, можно и таким образом:

if ($_FILES[\'image_file\'][\'size\']){
//делаем действие
}