|
|
|
| Форма:
...
<tr>
<td><p class=zag2>Изображение</td>
<td><input type="checkbox" name="chk_filename" onclick="freeze_filename(this.form)" <?php echo htmlspecialchars($chk_filename); ?>></td>
<td><input class=input size=70 type=file name=filename></td>
</tr>
...
|
скрипт-обработчик:
...
// Если поле выбора картинки не пустое - закачиваем её на сервер
// Если требуется загрузить файл - загружаем
$path = "";
if($_POST['chk_filename'] == "on")
{
if (!empty($_FILES['filename']['tmp_name']))
{
// Формируем путь к файлу
$path = "../files_news/".date("YmdHis",time());
// Если оператор пожелал переименовать файл - переименовываем
if($_POST['chk_rename'] == "on")
{
// Проверяем, чтобы не было прямых и обратных слешей
$_POST['rename'] = str_replace("\\","",$_POST['rename']);
$_POST['rename'] = str_replace("/","",$_POST['rename']);
$_POST['rename'] = stripcslashes($_POST['rename']);
$path = "../files_news/".substr($_POST['rename'], 0, strrpos($_POST['rename'], "."));
}
// Проверяем, не является ли файл скриптом PHP или Perl, html, если это так преобразуем его в формат .txt
$extentions = array("#\.php#is",
"#\.phtml#is",
"#\.php3#is",
"#\.html#is",
"#\.htm#is",
"#\.hta#is",
"#\.pl#is",
"#\.xml#is",
"#\.inc#is",
"#\.shtml#is",
"#\.xht#is",
"#\.xhtml#is");
// Извлекаем из имени файла расширение
$ext = strrchr($_FILES['filename']['name'], ".");
$add = $ext;
foreach($extentions AS $exten)
{
if(preg_match($exten, $ext)) $add = ".txt";
}
$path .= $add;
// Перемещаем файл из временной директории сервера в
// директорию /files_news Web-приложения
if (copy($_FILES['filename']['tmp_name'], "../".$path))
{
// Уничтожаем файл во временной директории
@unlink($_FILES['filename']['tmp_name']);
// Изменяем права доступа к файлу
@chmod("../".$path, 0644);
}
}
else links("Не указан файл для загрузки");
}
...
|
Выводит ошибку: "Не указан файл для загрузки". В чем причина - не могу разобраться, подскажите. | |
|
|
|
|
|
|
|
для: Dizels
(23.07.2008 в 12:41)
| | up | |
|
|
|
|
|
|
|
для: Dizels
(23.07.2008 в 13:00)
| | Если
if (!empty($_FILES['filename']['tmp_name']))
поменять на
if (!empty($_FILES['filename']['name']))
|
то все работает и записывается в БД, кроме создания самого файла. | |
|
|
|
|
|
|
|
для: Dizels
(23.07.2008 в 13:12)
| | Я уже совсем запутался - тот код, который приведен в самом начале вроде правильный, сверился с книгой PHP5 Практика создания веб-сайтов. Там вроде все так же - где ошибка - не могу понять((( | |
|
|
|
|
|
|
|
для: Dizels
(23.07.2008 в 13:34)
| | Ошибка в том, что Ваш код не анализирует поле $_FILES['filename']['error'] .
Хотя бы так:
else links("Не указан файл для загрузки (ошибка ".$_FILES['filename']['error'].")" );
|
| |
|
|
|
|
|
|
|
для: Dizels
(23.07.2008 в 12:41)
| | Корректную загрузку изображения можно проверить либо is_uploaded_file(), либо непосредственно по move_uploaded_file(). $_FILES['filename']['tmp_name'] это временное имя файла на сервере, поэтому давайте либо свое, либо используйте $_FILES['filename']'name'], вы же вообще никакого не используете. Забудьте о copy($_FILES['filename']['tmp_name']... возможны баги при некоторых условиях. | |
|
|
|
|
|
|
|
для: sim5
(23.07.2008 в 13:42)
| | Все таки хотелось бы разобраться что у меня не так, так как раньше все работало превосходно. | |
|
|
|
|
|
|
|
для: Dizels
(23.07.2008 в 14:02)
| | Вставил строчку:
else links("Не указан файл для загрузки (ошибка ".$_FILES['filename']['error'].")" );
|
Теперь выдает: Не указан файл для загрузки (ошибка 1) | |
|
|
|
|
|
|
|
для: Dizels
(23.07.2008 в 14:04)
| | А теперь смотрите список ошибок
error
1 - Размер файла превышает лимит, указанный в конфигe PHP | |
|
|
|
|
|
|
|
для: Trianon
(23.07.2008 в 14:07)
| | Trianon, большое спасибо, очень помогли! В жизни бы не доперло, что просто слишком большие фотки гружу. | |
|
|
|