|
|
|
| Есть форма:
<form name="form1" method="post" action="" enctype="multipart/form-data">
<input type="file[]" name="file">
<br>
<input type="file[]" name="file2">
<br>
<input type="file[]" name="file3">
<br>
<input type="file[]" name="file4">
<br>
<input type="submit" name="Submit" value="Submit">
</form>
|
Подскажите, как загрузить все файлы на сервер? И еще как сделать проверку на тип файлов (только изображения), размер файлов (не более 200 Kb).
Спасибо. | |
|
|
|
|
|
|
|
для: kis-kis
(20.12.2007 в 21:08)
| | <input type="file" name="namefile[]"> - массивом может быть имя поля, но никак не его тип!
Обрабатывайте полученный массив $_FILES['namefile']. | |
|
|
|
|
|
|
|
для: sim5
(20.12.2007 в 21:26)
| | Есть форма и обработчик (код ниже) помогите с массивом разобраться, почему в конечном итоге если загружаешь всего 1 фото, то $foto принимает значение - 3-1.jpg|3-2|3-3|3-4| , а должно быть всего 3-1.jpg|
Вот код:
<?php
if (($_POST) and ($add == "1"))
{
$err=0;
if (isset($HTTP_POST_FILES['pict']))
{
for($i = 0; $i < count($HTTP_POST_FILES['pict']['name']); $i++)
{
if ($HTTP_POST_FILES['pict']['size'][$i]>$mmn_auto_foto)
{
$err=1;
$bad .= "Размер фотографии - ".$HTTP_POST_FILES[pict][name][$i]." - больше допустимого<br>";
}
} //i
}
if ($bad)
{
echo "<div class=\"error_add\">".$bad."</div>";
}
else
{
//Добавляем информацию в базу
$path = "$mmn_root_path/auto/foto/";
$foto = '';
$id = 3;
// Изменяеи имя фото в соответствии с id
for ($i=0; $i<count($HTTP_POST_FILES['pict']['name']); $i++)
{
$num = $i+1;
$str = $HTTP_POST_FILES['pict']['name'][$i];
$pos = strrpos($str, '.');
$name_foto = $id.'-'.$num.substr($str, $pos);
// Копируем на сервер
copy ($HTTP_POST_FILES['pict']['tmp_name'][$i], $path . $name_foto);
// Массив фото для добавления в базу
$foto .= "".$name_foto."|";
}
// Конечное значение массива
echo $foto;
}
}
if ($err == "1" or $add <> "1")
{
echo"<form name=\"form1\" method=\"post\" action=\"\" enctype=\"multipart/form-data\">
<input type=\"file\" name=\"pict[]\"><br>
<input type=\"file\" name=\"pict[]\"><br>
<input type=\"file\" name=\"pict[]\"><br>
<input type=\"file\" name=\"pict[]\"><br>
<input type=\"submit\" name=\"Submit\" value=\"Submit\"><input type=\"hidden\" name=\"add\" value=\"1\">
</form>";
}
?>
|
Спасибо. | |
|
|
|
|
|
|
|
для: kis-kis
(28.12.2007 в 20:22)
| | Нет никаких вариантов? | |
|
|
|
|
|
|
|
для: kis-kis
(29.12.2007 в 10:14)
| | Нужно сохранять только файлы, которые были загружены успешно, а именно те, у которых $_FILES['pict']['error'][$i] == 0.
P.S. Вместо copy() желательно использовать move_uploaded_file(). | |
|
|
|
|
|
|
|
для: Unkind
(29.12.2007 в 11:59)
| | К сожалению, это $_FILES['pict']['error'][$i] == 0 не помогло, массив все равно принимает неправильное значение... ((
>>P.S. Вместо copy() желательно использовать move_uploaded_file().
А в чем разница, не подскажите? | |
|
|
|
|
|
|
|
для: kis-kis
(29.12.2007 в 13:12)
| | > К сожалению, это $_FILES['pict']['error'][$i] == 0 не помогло
Покажите, как Вы проверку делаете.
> А в чем разница, не подскажите?
Разница в том, что move_uploaded_file() сможет скопировать файл из директории, доступ к которой закрыт из-за safe_mode или open_basedir. | |
|
|
|
|
|
|
|
для: Unkind
(29.12.2007 в 13:46)
| |
if ($_FILES['pict']['error'][$i] == 0)
{
// Изменяеи имя фото в соответствии с id
for ($i=0; $i<count($HTTP_POST_FILES['pict']['name']); $i++)
{
$num = $i+1;
$str = $HTTP_POST_FILES['pict']['name'][$i];
$pos = strrpos($str, '.');
$name_foto = $id.'-'.$num.substr($str, $pos);
// Копируем на сервер
move_uploaded_file ($HTTP_POST_FILES['pict']['tmp_name'][$i], $path . $name_foto);
// Массив фото для добавления в базу
$foto .= "".$name_foto."|";
}
}
|
| |
|
|
|
|
|
|
|
для: kis-kis
(29.12.2007 в 13:52)
| | Наоборот проверка должна быть в теле цикла...
<?php
// ...
// Изменяеи имя фото в соответствии с id
for ($i=0; $i<count($_FILES['pict']['name']); $i++)
{
if($_FILES['pict']['error'][$i] == 0)
{
$num = $i+1;
$str = $_FILES['pict']['name'][$i];
$pos = strrpos($str, '.');
$name_foto = $id.'-'.$num.substr($str, $pos);
// Копируем на сервер
move_uploaded_file ($_FILES['pict']['tmp_name'][$i], $path . $name_foto);
// Массив фото для добавления в базу
$foto .= "".$name_foto."|";
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Unkind
(29.12.2007 в 14:03)
| | Спасибо, работает. А не подскажите как еще сделать проверку на тип загружаемых файлов? | |
|
|
|
|
|
|
|
для: kis-kis
(29.12.2007 в 15:20)
| |
<?php
// ...
$allow = array(
IMAGETYPE_GIF,
IMAGETYPE_JPEG,
IMAGETYPE_PNG,
IMAGETYPE_BMP
);
if( !in_array(exif_imagetype($filename), $allow) )
{
// Предупреждение
}
else
{
// Сохранение
}
?>
|
Но сохранять надо только с тем расширением, которое может быть у соответствующих типов изображений GIF => *.gif, JPEG => *.jpg и т.д. | |
|
|
|