Форум: "Потрепаться";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];
ВнизОбработка file upload в PHP Найти похожие ветки
← →
Просто Джо © (2005-06-12 23:43) [0]Вот, заставила судьба учить PHP. Учу. Уже пару дней :))
Попытался тут в обучающих целях сварганить загрузку файлов на сервер посредством простой типовой формы с методом POST и сценарием, в который по-идее должны передаваться данные этого файла. И его имя. Вроде все просто до безобразия, ан нет.
Файл 1.html со стандартной формой для загрузки файла на сервер
=======
<html>
<head></head>
<body>
<form enctype="multipart/form-data" id="data" metod="POST" action="file_upload.php">
<input name="picfile" type="file" size="50"><br>
<input name="submit" type="submit">
</form>
</body>
</html>
=======
Файл file_upload.php со скриптом, пытающимся вывести имя файла, загруженного на сервер. Но безрезультатно.
<?php
extract($_REQUEST);
extract($_POST);
extract($_FILES);
// этот массив пуст
echo $_FILES["picfile"]["name"];
if ($picfile)
{
if (is_uploaded_file($picfile))
{
// и в этой переменной ничего нет
echo $picfile;
}
}
?>
При выполнении сценария имя файла не выводится. Где ковырять? Может, какие-то еще настройки в php.ini? Кроме file_uploads = On, конечно.
Знатоки PHP, подскажите в чем грабли. Опс. PHP 5 версии.
← →
phpGuru (2005-06-13 01:33) [1]http://www.web-faq.ru/showstat.php?viewfull=php&id=15
← →
Просто Джо © (2005-06-13 01:38) [2]
> [1] phpGuru (13.06.05 01:33)
Спасибо, пхпГуру. Похоже - статья дельная. Но я уже сегодня этих статей перечитал... бр... Пойду запасусь пивком и прочту-ка на ночь еще одну, может, снизойдет на меня благодать :))
Спасибо еще раз, буду читать.
← →
Просто Джо © (2005-06-13 02:30) [3]Увы... во всех статьях одни и те же примеры и рекоммендации.
Но, как ни крути, все равно ничего не работает :(
Глубоко собака зарылась, однако...
← →
VictorT © (2005-06-13 02:52) [4]На первый взляд, вроде всё правильно. Счас попробую у себя, хоть будем знать, дело в скрипте или в сервере.
← →
VictorT © (2005-06-13 02:56) [5]О, первую ошибку уже нашёл, сам на такое напоролся, это отдельная и длинная история :D
> method="POST"
← →
Просто Джо © (2005-06-13 03:00) [6]А!!! Позор на мою голову, елы-палы. Огромное спасибо, Витя, теперь все ОК.
Уже, блин, весь в мыле был.
← →
VictorT © (2005-06-13 03:02) [7]Обрати внимание на второй пост :D
http://deep.webest.net/forum/reply.php?num=&id=17334
А я пока смотрю, что там ещё не так.
← →
VictorT © (2005-06-13 03:04) [8]
> теперь все ОК
Всё ОК? А у меня ругается вот так: Notice: Array to string conversion in z:\home\rimit\www\file_upload.php on line 12
← →
Просто Джо © (2005-06-13 03:06) [9]> А я пока смотрю, что там ещё не так.
Да вроде все заработало, слава тебе, Господи.
Однако, забавное совпадение. "Проблему" уже стоит выносить в ФАК :)))
← →
Просто Джо © (2005-06-13 03:17) [10]Поменял на такое и работает отлично:
<?php
if (move_uploaded_file($_FILES["picfile"]["tmp_name"], $_FILES["picfile"]["name"]))
{
print "Uploaded";
}
else
{
print "NOT UPLOADED!";
}
?>
← →
VictorT © (2005-06-13 03:22) [11]
> Просто Джо © (13.06.05 3:17) [10]
На это код у меня не ругается. Только, имхо, нужно точнее указать, куда именно переносить загруженный файл. У меня его перенесло в папку apache
← →
Просто Джо © (2005-06-13 03:30) [12]У меня тоже сначала в Апач в корень писало... Да вроде и с этим разобрался. Прилепляешь слева путь к нужной директории - и пишет туда без проблем. Но мне, в принципе, это и не особенно важно, мне главное, чтобы он аплоадил во временную папку, так как файлик тут же будет в БД затаскиваться.
Спасибо еще раз, что ткнул носом в опечатку, просто беда какая-то была :0)
← →
VictorT © (2005-06-13 03:34) [13]
> так как файлик тут же будет в БД затаскиваться.
Имхо, не лучший способ, лучше всё-таки файл в файловой системе, а в БД просто на него указатель. Хотя, конечно, нужно смотреть по конкретной ситуации, которую я не знаю.
← →
VictorT © (2005-06-13 03:40) [14]Реляционные базы данных хорошо работают с типизированными значениями
фиксированного размера. В MySQL поддерживаются типы переменной длины, например BLOB и TEXT, но управлять ими сложнее. Такого рода информацию лучше
хранить в файлах, а в базе данных достаточно запоминать путевые имена этих файлов
в столбцах типа CHAR. Если база данных используется в Web-приложениях, помните о том, что у Web-сервера есть кеш-буферы загружаемых файлов изображений и аудио-клипов, поэтому он будет работать с такими файлами быстрее, чем MySQL.
Еще одна причина избегать столбцов подобного типа заключается в появлении записей переменной длины со всеми вытекающими отсюда последствиями. При внесении изменений такая таблица становится фрагментированной, что приводит к замедлению доступа к ней. Для извлечения динамической строки может потребоваться несколько операций чтения, что также не способствует повышению производительности.
← →
Просто Джо © (2005-06-13 03:56) [15]
> [14] VictorT © (13.06.05 03:40)
Да там, собственно, специализированный тип данных. Пространственные данные БД PostgreSQL. Они внутренне хранятся как текст, но по ним строится индекс и поддерживаются пространственные запросы. А я пока изгаляюсь над этим делом, попутно изучая PHP. В конечном итоге, фронт-енд будет все-равно на Делфи и данные будут пересылаться непосредственно серверу БД, минуя веб-сервер.
← →
phpGuru (2005-06-14 00:49) [16]Проверьте файл php.ini на правильность этих директив:
extension_dir = D:/usr/PHP3/extensions
enable_dl = On
file_uploads = On
upload_tmp_dir = D:/usr/PHP3/uploads
upload_max_filesize = 8M
register_globals = on
← →
Piter © (2005-06-14 01:01) [17]А я гружу вот так, например:
if($subaction == "upload")
{
if(!$image){ $image = $HTTP_POST_FILES["image"]["tmp_name"]; }
if(!$image_name){ $image_name = $HTTP_POST_FILES["image"]["name"]; }
← →
Просто Джо © (2005-06-14 01:07) [18]Спасибо, ребята, я уже разобрался. Дело было в опечатке :)
← →
VictorT © (2005-06-14 13:52) [19]Уже оффтопим, но проблема и так уже исчерпана, думаю, можно :
А что такое > Пространственные данные? Не слышал про такое.
← →
Просто Джо © (2005-06-14 14:34) [20]
> Пространственные данные?
Пространственные координаты (поддержка 3-х мерных, но мне нужно только 2-х мерные, так что "с запасом":). Соответственно, введены и такие типы данных, как POLYGON, LINE и т.д. По этим полям можно строить так называемый GIST-индекс. Для этих полей существуют специальные операторы для SQL-запросов, такие как:
~= объекты геометрически идентичны
@ первый объект полностью содержится во втором
&& объекты пересекаются
и так далее.
Кроме того, имеется куча встроенных функций для этих типов.
Насколько мне известно, подобная вещь (из крутых серверов БД) есть только в Оракл.
Формат предстваления этих данных - текстовый, поддерживает стандарт OpenGIS. Но работает довольно шустро, так как индекс весьма эффективный.
← →
VictorT © (2005-06-15 15:10) [21]Круто, не слышал про такое.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.04 c