Forum Webscript.Ru
Программирование => Perl => Тема начата: teebot от 03 Августа 2001, 23:20:35
-
???Есть форма для закачки файла на сервер, состоит она из описания закачиваемого файла, имя того кто прислал, его мэйл ну и собственно сам файл.
Все поля я обрабатываю нормально но когда доходит до файла я не могу выделить все что находится между boundary и Content-Type: xxxxxx/yyyy тоесть сам файл.
image/gif
Погогите плиззззз...
Спасибо. ???
-
Yurick (21-04-2001 20:48):
Нужно содать кучу новых директорий
вида www.domen.net/username, но не хочется их
хранить в корневой директории, посему хотелось бы
создать алиасы и хранить все это в отдельной директории
типа www.domen.net/users/username.
Пробовал ставить в файле htaccess строку с описанием
алиаса - в ответ получил ошибку 500 при попытке открыть любую
страницу сайта.
Если использовать редирект или скрипт, то в адесной строке
появляется реальное адрес страницы, что не есть good.
Помогите, плз, а то уже мозги закипают.
UserDir ?
-
cj (22-04-2001 10:32):
UserDir ?
Ответ не понял...
названия директорий приведены условные.
-
Здравствуйте.
Извините что сам не догадался.
Как я уже неднократно упоминал в перле я человек новый, поэтому я ошибочно полагал что не существует четкой границы между данными из формы, файлом и разными там Content-Disposition: и т.д и т.п. но граница есть, это таки \\r\\n. Секрет в том, что я сначало делил этот закачаный бред split`ом по признаку Content-Disposition: (<<во дурак то>>), а надо было по boundary. И только тогда могла получиться такая вот фигня:
Content-Disposition: form-data; name=\'ufile\'; filename=\'D:\\KZD\\TC\\add.GIF\' Content-Type: \\r\\n image/gif \\r\\n
<--------сам файл-------->
Так мне удалось разбить полученную информацию.
Но тут вылезла другая фигня, в самом файле тоже могла встретиться последовательность \\r\\n и файл мог закачиваться неполностью (пардон ошибся файл закачивается полностью всегда, просто последовательность \\r\\n могла разбить и сам файл на части, что крайне нежелательно).
Но так как переменная типа @var=split является массивом, то я просто пропустил
$var[0]-там хранится "пусто"
потом обработал
$var[1]-там хранится Content-Disposition:form-data; name=\'ufile\'; filename=\'D:\\KZD\\TC\\add.GIF
потом пропустил
$var[2]-там хранится Content-Type:
потом пропустил
$var[3]-там хранится image/gif
$var[4]-там хранится "пусто", а все что дальше, это и есть файл.
Ну вот вроде и все. Старался как мог.
-
Что за вопрос, где исходник и подробности.
Как тебе помочь - сказать что в у тебя где-то ошибка?
У тебя указан в форме enctype?
-
enctype у меня есть.
А насчет исходняка, дело в том, что я как раз эту часть скрипа не реализовал.
Так как я абсолютно не знаком с этой технологией пришлось постигать все самому.
Я смотрел что находится в $st (read(STDIN,$st,$ENV{\'CONTENT_LENGTH\'});)
Если стоит enctype то $ENV{\'CONTENT_TYPE\'}; в любом случе выглядит как:
multipart/form-data; boundary=-----------------------------xxxxxxxxxxxxx
НО есть еще один CONTENT_TYPE, того файла который мы закачиваем.
Все выглядит примерно так (если мы закачиваем гифку):
Content-Type: image/gif......ЗАКАЧИВАЕМЫЙ ФАЙЛ........---------------7d135212e74
Как показала практика после image/gif нет даже пробела. Как узнать где заканчивается image/gif и начинается ФАЙЛ (закачиваем не только гифы, все поподет под руку) и где заканчивается ФАЙЛ и начинается ---------------7d135212e74--?
Может существует переменная,типа CONTENT_TYPE, где хринится этот проклятый image/gif.
Еще заметил такую фигню после записи этого бреда в файл граница становится предельно четкой это \\r\\n.
Такие вот пироги.
-
Если вопрос ко мне, то Апач самый обычный. ver 1.3.6.
-
Друзья!!!
Данные были успешно мною выделенный спасибо всем.
-
Друзья!!!
Данные были успешно мною выделенный спасибо всем.
Ну рассказал бы что-ли.
-
Я данный вопрос муссирую на форуме около месяца :D Еще ни кто не ответил по теме. Мои настройки сервера проверял Chs, сказал - Ок. В чем прикол, сам не пойму. Вроде не начанающий. Скрипты народ тоже проверил.
Найди тему Upload фалов в теме CGI-скрипты.
:o
[Edited on 4.8.2001 Realtor from Moscow]
-
А Апач русский ?