Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
9-1111935540
$SerG$
2005-03-27 18:59
2005.07.11
LIFE


14-1118828391
Sash
2005-06-15 13:39
2005.07.11
не грузится комп :(


10-1095145890
Суслик
2004-09-14 11:11
2005.07.11
structured storage


5-1088931459
ida
2004-07-04 12:57
2005.07.11
Как принудительно переносить строки?


4-1115906675
Tomkat
2005-05-12 18:04
2005.07.11
Управление двунаправленным LPT портом





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский