[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Закачка фалов на сервер
53219
Здравствуйте помогите пожалуйста ни как не получается скачать четыре файла за один раз. Что не так делаю? За ранее спасибо.
<p>
<p>
Маленькая картинка</p>
<form
action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<input
type="file" name="uploadfile[]"><br>
<p>
Большая картинка</p>
<input
name="uploadfile[]" type="file"><br>
<p>
Технический чертёж №1</p>
<input
name="uploadfile[]" type="file"><br>
<p>
Технический чертёж №2</p>
<input
name="uploadfile[]" type="file">
<input
type="submit" value="Отправить файлы ">
</form>
</p>

<?php

// Каталог, в который мы будем принимать файл:
$uploaddir = '../images/untitled/';
$uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);

// Копируем файл из каталога для временного хранения файлов:
if (copy($_FILES['uploadfile']['tmp_name'], $uploadfile))
{
echo "<h3>Файл успешно загружен на сервер</h3>";
}
else { echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>";}
?>




Спустя 52 минуты, 21 секунда (29.12.2009 - 09:06) glock18 написал(а):
достаточно прочитать комментарии, чтобы понять, что "качается" только один. хотя сейчас из-за того, что это массив, не качается ничего. продампь $_FILES при получении.

Спустя 30 минут, 15 секунд (29.12.2009 - 09:36) ApuktaChehov написал(а):
У тебя uploadfile массив. А ты его обрабатываешь как обычную переменную

Спустя 8 часов, 1 минута, 21 секунда (29.12.2009 - 17:37) 53219 написал(а):
А как сделать что бы качал целый массив? Я новичок в php если можно по подробнее! За ранее благодарю!!!

Спустя 5 часов, 45 минут, 47 секунд (29.12.2009 - 23:23) ИНСИ написал(а):
может так, попробуй:

$field = array(); // создаем массив
if($_POST['uploadfile']) { $field[] = $_POST['uploadfile']; } // заносим каждое поле с "фото" в массив

$uploaddir = '../images/untitled/'; // путь для загрузки
$extentions = array("jpg", "jpe", "jpeg", "gif", "png"); // формат файлов, которые можно загрузить

// обходим циклом массив

for($i = 0, $c = sizeof($field); $i < $c; $i++) {

$size = getimagesize($_FILES[$field]['tmp_name']); // берем информацию о рисунке
$format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1)); // узнаем формат рисунка
$uploadfile = $uploaddir . $name = uniqid(); // создаем случайное имя + полный путь для сохранения

if(in_array($format, $extentions)) { // если формат разрешен, идем дальше
if(!(move_uploaded_file($_FILES[$field]['tmp_name'], $uploadfile)) { // если фото не было загружено, выводим сообщение
echo '<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>';
}
}
else {
echo 'Формат файла не разрешен!'; // сообщение
}

}

echo '<h3>Файл успешно загружен на сервер</h3>'; // выводим сообщение

Спустя 27 минут, 1 секунда (29.12.2009 - 23:50) twin написал(а):
"jpe"
Странно... А почему не "jpz" или "jpq"... Чем он так тебе приглянулся?

Спустя 2 минуты, 20 секунд (29.12.2009 - 23:52) twin написал(а):
И вообще зачем такая каша из $_POST И $_FILES?

Спустя 10 часов, 10 минут (30.12.2009 - 10:02) ИНСИ написал(а):
twin долго не стал разбираться, сделал по быстрому, вот и каша получалась smile.gif сделал для примера, пусть теперь автор топика старается изменить, делать лучше и т.д.

Спустя 9 минут, 9 секунд (30.12.2009 - 10:12) twin написал(а):
Странно все это... Ну а почему бы такой код не написать (раз не стал разбираться и сделал по быстрому):
   if(isset($_POST['but_add']) && isset($_POST['add_name']) && is_scalar($_POST['add_name']))
{
$add_name = get_magic_quotes_gpc() ?
stripslashes(trim($_POST['add_name'])) :
trim($_POST['add_name']);
$add_name = mysql_real_escape_string($add_name);
mysql_query("INSERT INTO `names` (`name`) VALUE ('$add_name')") or die ('Ну не получается у меня добавить имя!');
header('location:' .$_SERVER['REQUEST_URI']);
exit();
}
и наплевать что он к теме отношения не имеет... Пусть мол автор разбирается и улучшает. При помощи напильника и какой то матери можно из танка сделать самолет.

Каким боком ты там POST прилепил, откуда он вообще?

Спустя 6 часов, 22 минуты, 33 секунды (30.12.2009 - 16:34) ИНСИ написал(а):
twin я только заметил, что в одном месте поставил $_POST вместо $_FILES. Но ты так реагируешь, снова показываешь грубость!

Спустя 1 час, 12 минут, 18 секунд (30.12.2009 - 17:46) twin написал(а):
Никакой грубости... Где ты видел?
А вот решение твое не просто грубо неверное, но и полностью сбивающее с толку. Не только топикстартера, но и меня даже. Зачем массив перезаписывать? Я так и подумал, что ты на клиенте предлагал поля продублировать.
Так что в следующий раз не нужно
Цитата
долго не стал разбираться, сделал по быстрому, вот и каша получалась
если уж даешь ответ. Что подумают люди о уровне форума, если тут будут даваться непродуманные ответы на скорую руку?

Спустя 3 часа, 28 минут, 45 секунд (30.12.2009 - 21:15) ИНСИ написал(а):
twin в чем-то с тобой согласен, что не надо на скорую руку делать.... Я имею в виду, делал на скорую руку, без всяких дополнительных модулей, типа проверки размера и т.д..... Чтобы человек сам дописал если ему надо. Единственное, в одном месте запорол, признаю..

Спустя 5 часов, 9 минут, 42 секунды (31.12.2009 - 02:25) 53219 написал(а):
Спасибо за ответы но я сделал вот так, прокомментируйте если что то не так сделал. Принципе у меня всё работает.

<p><p>Маленькая картинка</p>
<form
action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<input
type="file" name="uploadfile[]"><br>
<p>
Большая картинка</p>
<input
name="uploadfile[]" type="file"><br>
<p>
Технический чертёж №1</p>
<input
name="uploadfile[]" type="file"><br>
<p>
Технический чертёж №2</p>
<input
name="uploadfile[]" type="file">
<input
type="submit" value="Отправить файлы ">
</form>
</p>


<?php
// Каталог, в который мы будем принимать файл:
$uploaddir = '../products_pictures/untitled/';
$uploadfile = $uploaddir.basename($_FILES['uploadfile']['name'][0]);
// Копируем файл из каталога для временного хранения файлов:
copy($_FILES['uploadfile']['tmp_name'][0], $uploadfile);

$uploadfile = $uploaddir.basename($_FILES['uploadfile']['name'][1]);
// Копируем файл из каталога для временного хранения файлов:
copy($_FILES['uploadfile']['tmp_name'][1], $uploadfile);

$uploadfile = $uploaddir.basename($_FILES['uploadfile']['name'][2]);
// Копируем файл из каталога для временного хранения файлов:
copy($_FILES['uploadfile']['tmp_name'][2], $uploadfile);

$uploadfile = $uploaddir.basename($_FILES['uploadfile']['name'][3]);
// Копируем файл из каталога для временного хранения файлов:
copy($_FILES['uploadfile']['tmp_name'][3], $uploadfile);
?>

Спустя 2 часа, 43 минуты, 28 секунд (31.12.2009 - 05:08) twin написал(а):
Это плохо. Потому что не факт, что будут выбраны все 4 картинки. welbox2 думал в правильном направлении, просто немного перемудрил. Нужно разобрать массив $_FILES в цикле. Примерно так:
  $extentions = array("jpg", "jpeg", "gif", "png");
$uploaddir = '../products_pictures/untitled/';

while(list($file) = each($_FILES))
if($_FILES[$file]['error'] === 0 && in_array(pathinfo($_FILES[$file]['name'], PATHINFO_EXTENSION), $extentions))
move_uploaded_file($_FILES[$file]['tmp_name'], $uploaddir . $_FILES[$file]['name']);

?>
<form action="" method="post" enctype="multipart/form-data">
<
input name="uploadfile1" type="file" />
<
input name="uploadfile2" type="file" />
<
input name="uploadfile3" type="file" />
<
input name="" type="submit" />
</
form>


Обрати внимание, что функцию copy() тут лучше не юзать. И должна быть хоть минимальная проверка на тип файла, иначе зальют что нибудь исполняемое и каюк сайту.

Имена у полей могут быть любыми, не нужно там массива. Главное чтоб они были разными. И количество тоже любое.

И учти, если имена файлов совпадут - они перезапишутся.

Спустя 5 часов, 25 минут, 11 секунд (31.12.2009 - 10:33) 53219 написал(а):
Спасибо большое так однозначно лучше. А вот у меня еще есть такая задача. Мне при редактировании картинок сразу надо удалить старые картинки как это реализовать? Я это сделал вот так:

<?php
$result_foto = mysql_query("SELECT photoID,filename,enlarged FROM pictures WHERE productID='$id'",$db);
$myrow_foto = mysql_fetch_array($result_foto);
do{
$photoID[]=$myrow_foto['photoID'];
}
while ($myrow_foto = mysql_fetch_array ($result_foto));

$result_foto1 = mysql_query("SELECT photoID,filename,enlarged FROM pictures WHERE photoID='$photoID[0]'",$db);
$myrow_foto1 = mysql_fetch_array($result_foto1);
$result_foto2 = mysql_query("SELECT photoID,filename,enlarged FROM pictures WHERE photoID='$photoID[1]'",$db);
$myrow_foto2 = mysql_fetch_array($result_foto2);
?>
<p><p>Маленькая картинка</p>
<
form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<
input type="file" name="uploadfile[]"><br>
<
p>Большая картинка</p>
<
input name="uploadfile[]" type="file"><br>
<
p>Расцветки товара если сушествуют</p>
<
input name="uploadfile[]" type="file"><br>
<
p>Технический чертёж</p>
<
input name="uploadfile[]" type="file">
<
input type="submit" value="Обновить картинки">
</
form>
</
p>
<?php
// Каталог, в который мы будем принимать файл:
$uploaddir = '../products_pictures/untitled/';
$uploadfile = $uploaddir.basename($_FILES['uploadfile']['name'][0]);
if($_FILES['uploadfile']['name'][0])
{
// Копируем файл из каталога для временного хранения файлов:
copy($_FILES['uploadfile']['tmp_name'][0], $uploadfile);
// ...удаляем старое фото.
unlink("../products_pictures/".$myrow_foto1['filename']."");
}

$uploadfile1 = $uploaddir.basename($_FILES['uploadfile']['name'][1]);
if($_FILES['uploadfile']['name'][1])
{
// Копируем файл из каталога для временного хранения файлов:
copy($_FILES['uploadfile']['tmp_name'][1], $uploadfile1);
// ...удаляем старое фото.
unlink("../products_pictures/".$myrow_foto1['enlarged']."");
}

$uploadfile2 = $uploaddir.basename($_FILES['uploadfile']['name'][2]);
if($_FILES['uploadfile']['name'][2])
{
// Копируем файл из каталога для временного хранения файлов:
copy($_FILES['uploadfile']['tmp_name'][2], $uploadfile2);
// ...удаляем старое фото.
unlink("../products_pictures/".$myrow_foto2['filename']."");
}

$uploadfile3 = $uploaddir.basename($_FILES['uploadfile']['name'][3]);
if($_FILES['uploadfile']['name'][3])
{
// Копируем файл из каталога для временного хранения файлов:
copy($_FILES['uploadfile']['tmp_name'][3], $uploadfile3);
// ...удаляем старое фото.
unlink("../products_pictures/".$myrow_foto2['enlarged']."");
}
?>

Спустя 38 минут, 34 секунды (31.12.2009 - 11:12) sergeiss написал(а):
Цитата (53219 @ 31.12.2009 - 11:33)
Мне при редактировании картинок сразу надо удалить старые картинки как это реализовать? Я это сделал вот так:

Специально для "жертв поповщины" тут есть тема: http://phpforum.ru/index.php?showtopic=21916. Почитай там, плз!

Спустя 1 час, 55 минут, 27 секунд (31.12.2009 - 13:07) Gabriel написал(а):
хм-мм.. вагон повторяющегося кода. не лучше циклом воспользоваться?
Быстрый ответ:

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