|
|
|
| Помогите решить проблему пжл..
Есть форма
<form enctype="multipart/form-data" action="up.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
Путь к файлу: <input name="userfile" type="file">
<input type="submit" value="Send File">
</form>
А это файл up.php
<?php
$uploaddir = './up/';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir.$_FILES['userfile']['name'])) {
print "Загружено!";
} else {
print "Возникла ошибка((";
}
echo "Информация о загруженном на сервер файле: >";
echo "Оригинальное имя загруженного файла: ".$_FILES['userfile']['name'];
echo "<p>Mime-тип загруженного файла: ".$_FILES['userfile']['type'];
echo "<p>Размер загруженного файла в байтах: ".$_FILES['userfile']['size'];
echo "<p>Временное имя файла: ".$_FILES['userfile']['tmp_name']."</p>";
?>
Пробую загрузить в уже созданный каталог тхт-файл - загрузился. Пробую загрузить картинку - пишет "Возникла ошибка". | |
|
|
|
|
|
|
|
для: (Sandr)
(12.06.2011 в 21:17)
| | И после загрузки тхт-файла есго имя(если оно на кирилице) перекодируется в неизвестную кодировку. Можете сказать почему? | |
|
|
|
|
|
|
|
для: (Sandr)
(12.06.2011 в 21:20)
| | Где дело происходит? На хостинге? | |
|
|
|
|
|
|
|
для: cheops
(12.06.2011 в 21:21)
| | Нет. На денвере. | |
|
|
|
|
|
|
|
для: (Sandr)
(12.06.2011 в 21:22)
| | Вообще это странно, денвер должен без проблем оперировать русскими именами под Windows. | |
|
|
|
|
|
|
|
для: (Sandr)
(12.06.2011 в 21:17)
| | Имя изображения английскими буквами набрано? | |
|
|
|
|
|
|
|
для: cheops
(12.06.2011 в 21:20)
| | Да. К примеру "x_c4289722.jpg" | |
|
|
|
|
|
|
|
для: (Sandr)
(12.06.2011 в 21:23)
| | Лучше все-таки русские символы перекодировать в транслит. | |
|
|
|
|
|
|
|
для: cheops
(12.06.2011 в 21:26)
| | Да кодировка, это ещё по беды.. Меня больше волнует, почему файл не грузится.. | |
|
|
|
|
|
|
|
для: (Sandr)
(12.06.2011 в 21:30)
| | Это может быть из-за того, что сама форма расположена в switch'е ? | |
|
|
|
|
|
|
|
для: (Sandr)
(12.06.2011 в 21:31)
| | Маловероятно, если форма отображается и позволяет вам отправить файл на сервер, дальше она участия в его судьбе не принимает. | |
|
|
|
|
|
|
|
для: (Sandr)
(12.06.2011 в 21:30)
| | Если скрипт возвращает "Возникла ошибка" файл возможно загружен, просто не может скопироваться. В любом случае вы всегда можете однозначно выяснить загружен файл или нет при помощи функции is_uploaded_file(). | |
|
|
|
|
|
|
|
для: cheops
(12.06.2011 в 21:35)
| | Добавил это
if(is_uploaded_file($_FILES['userfile']['tmp_name']))
{echo 'Загружен!';} else {echo 'Не загружен';}
Выдает, что не загружен. | |
|
|
|
|
|
|
|
для: (Sandr)
(12.06.2011 в 21:38)
| | А размер файла большой? Не может он превышать 30Кб (это ограничение указано у вас с HTML-форме)? | |
|
|
|
|
|
|
|
для: cheops
(12.06.2011 в 22:04)
| | Точно! Я думал там ограничение в мб указывается) Спасибо. Теперь всё норм) | |
|
|
|
|
|
|
|
для: (Sandr)
(12.06.2011 в 22:19)
| | Ещё один вопрос, Решил сделать несколько инпутов, т.е.
<input name="userfile[]" type="file"><br>
<input name="userfile[]" type="file"><br>
<input name="userfile[]" type="file"><br>
<input name="userfile[]" type="file"><br>
<input name="userfile[]" type="file"><br>
Но, что нужно изменить с самом скрипте, чтоб он загружал все файлы? | |
|
|
|
|
|
|
|
для: (Sandr)
(12.06.2011 в 23:12)
| | Сделать цикл обхода массива $_FILES['userfile']['tmp_name'], а к самим значениям обращаться через $_FILES['userfile']['tmp_name'][$i], где $i - значение от 0 до n - 1, где n - количество input-элементов типа type. | |
|
|
|
|
|
|
|
для: cheops
(13.06.2011 в 00:08)
| | Спасибо, получилось) | |
|
|
|
|
|
|
|
для: cheops
(13.06.2011 в 00:08)
| | Выложил на хост этот скрипт, не загружает..
индекс.пхп
echo '<form enctype="multipart/form-data" action="up.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="999999999999999999">
Путь к файлу: <br>
<input name="userfile" type="file"><br>
<input type="submit" value="Send File">
</form>';
юп.пхп
$uploaddir = $_SERVER['DOCUMENT_ROOT'].'/up/';
//$uploaddir = 'up/';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir.$_FILES['userfile']['name'])) {
print "Загружено!";
} else {
print "ВНЕЗАПНО!!!!!Возникла ошибка((<p>";
}
echo "<h3>Информация о загруженном на сервер файле: </h3>";
echo "<p><b>Оригинальное имя загруженного файла: ".$_FILES['userfile']['name']."</b></p>";
echo "<p><b>Mime-тип загруженного файла: ".$_FILES['userfile']['type']."</b></p>";
echo "<p><b>Размер загруженного файла в байтах: ".$_FILES['userfile']['size']."</b></p>";
echo "<p><b>Временное имя файла: ".$_FILES['userfile']['tmp_name']."</b></p>";
Не пойму в чём проблема. На денвере всё прекрасно работает. | |
|
|
|
|
|
|
|
для: (Sandr)
(14.06.2011 в 12:46)
| | Права доступа на папку up выставлены (0777)? | |
|
|
|
|
|
|
|
для: cheops
(14.06.2011 в 12:48)
| | Выставлял 777, но я так понимаю, что это тоже самое что и 0777 | |
|
|
|
|
|
|
|
для: cheops
(14.06.2011 в 12:48)
| | Изменил move_uploaded_file на copy и все норм стало. Скажите, если убрать поле <input type="hidden" name="MAX_FILE_SIZE" value="99999999999999999999"> то какие ограничения будут на размер файлов? | |
|
|
|
|
|
|
|
для: (Sandr)
(14.06.2011 в 13:22)
| | Ограничения будут задаваться директивами post_max_size и upload_max_filesize конфигурационного файла php.ini, посмотреть их значения можно через отчет функции phpinfo(). | |
|
|
|