информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsАтака на InternetЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft обещает радикально усилить... 
 Ядро Linux избавляется от российских... 
 20 лет Ubuntu 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / web building
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Не понял.. Ты имеешь ввиду межсайтовый скриптинг или просто... 09.08.04 12:13  Число просмотров: 3270
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка>
> Да я знаю, как это выглядит в html, меня больше perl-овая
> сторона волнует.
> Как организовать закачку файлов на сайт через веб? Это
> надо, чтобы этот скрипт подключался к этому серваку по фтп
> и заливал указанный файл, или как-то по-другому?

Не понял.. Ты имеешь ввиду межсайтовый скриптинг или просто закачку через форму на сайт? Если обычную закачку, то решение достаточно простое:

$temp=<>;
myformat($temp);
open (FH,"xxx");
print FH xxx;
close FH;

myformat приводит результат <> к нормальному виду (в STDIN данные лежат в urlencoded) - её надо писать самому. Вроде, тут всё просто.

Вечером (по Москве), если руки дойдут, напишу простой работающий код и выложу здесь ответом.
<web building>
[perl] Создание загрузки файлов на сервер через веб. 09.08.04 05:34  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
Меня интересует, как на perl сделать загрузку файлов на сервер (например, мой сайт) через веб-интерфейс.
Объясняю, что я имею ввиду. Я делаю админку для своего сайта и мне хочется добавить к этой админке вот такую загрузку файлов: вводишь путь к файлу на локальном компе, жмешь кнопку "залить" и файл заливается %) Или кнопку "обзор" можно сделать...
Мне это надо, чтобы каждый раз не заливать нужные файлы на сайт через FTP.
[php] А то же самое в php? 11.08.04 08:33  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
А то же самое в пхп как будет выглядеть?
Точно так же 11.08.04 08:38  
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка>
В HTML это выглядит как (появится... 09.08.04 09:33  
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка>
В HTML это выглядит как <input type=file name=xxx> (появится стандартное текстовое поле с "обзором"). А в Perl-скрипте он будет доступен через STDIN.
Да я знаю, как это выглядит в html, меня больше perl-овая... 09.08.04 12:05  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
Да я знаю, как это выглядит в html, меня больше perl-овая сторона волнует.
Как организовать закачку файлов на сайт через веб? Это надо, чтобы этот скрипт подключался к этому серваку по фтп и заливал указанный файл, или как-то по-другому?
Не понял.. Ты имеешь ввиду межсайтовый скриптинг или просто... 09.08.04 12:13  
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка>
> Да я знаю, как это выглядит в html, меня больше perl-овая
> сторона волнует.
> Как организовать закачку файлов на сайт через веб? Это
> надо, чтобы этот скрипт подключался к этому серваку по фтп
> и заливал указанный файл, или как-то по-другому?

Не понял.. Ты имеешь ввиду межсайтовый скриптинг или просто закачку через форму на сайт? Если обычную закачку, то решение достаточно простое:

$temp=<>;
myformat($temp);
open (FH,"xxx");
print FH xxx;
close FH;

myformat приводит результат <> к нормальному виду (в STDIN данные лежат в urlencoded) - её надо писать самому. Вроде, тут всё просто.

Вечером (по Москве), если руки дойдут, напишу простой работающий код и выложу здесь ответом.
Просто закачку файлов с моего компа на сайт через веб-форму. 09.08.04 15:06  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
> Не понял.. Ты имеешь ввиду межсайтовый скриптинг или просто
> закачку через форму на сайт?

Просто закачку файлов с моего компа на сайт через веб-форму.

> Вечером (по Москве), если руки дойдут, напишу простой
> работающий код и выложу здесь ответом.

буду очень благодарен ;)
Код 09.08.04 21:30  
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка>
Во-первых извинюсь - попутал немного с потоком ввода. Файл поступает не через STDIN, а через дескриптор, именованый как имя файла. Например, если Ты отправляешь файл xxx.txt, то читать его надо как <xxx.txt>. Имя файла передаётся как параметр. Пример из ФАК'а:

$filename = $query->param('uploaded_file');
while (<$filename>) {
print;
}

В том же факе рекомендуется заместо param использовать upload - она возвращает не имя закачиваемого файла, а имя дескриптора, что более корректно.

Вот и всё, в общем-то.
а если мне хочется не содержание загруженного текстовика на... 10.09.04 10:22  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
Отредактировано 10.09.04 10:50  Количество правок: 1
<"чистая" ссылка>
> Во-первых извинюсь - попутал немного с потоком ввода. Файл
> поступает не через STDIN, а через дескриптор, именованый
> как имя файла. Например, если Ты отправляешь файл xxx.txt,
> то читать его надо как <xxx.txt>. Имя файла
> передаётся как параметр. Пример из ФАК'а:
>
> $filename = $query->param('uploaded_file');
> while (<$filename>) {
> print;
> }

а если мне хочется не содержание загруженного текстовика на экран вывести, а файл, допустим .zip в какой-нить папке сервера сохранить, тогда как делать?

когда я делаю так:

use CGI;
$cgi = new CGI;
$paste = $cgi->param("paste");

print "<form method=\"post\" enctype=\"multipart/form-data\" action=\"filez.un\">";
print "<input type=\"file\" name=\"paste\">";
print "<input type=\"submit\" value=?????????>";
print "</form>";

open FI, ">$paste";
while(<$paste>){
    print FI;
};
close FI;

---

но этоот код передает без повреждений только текстовики, графические файлы он изменяет до неузнаваимости, архивы - калечит.
что посоветуете?
Все! ;) Вопрос решен, всем спасибо за помощь. 14.09.04 09:44  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
Все! ;) Вопрос решен, всем спасибо за помощь.
Оказывается, надо было дописать всего одну строчку - использовать функцию binmode =)
Итоговый код:

use CGI;
 $cgi = new CGI;
 $paste = $cgi->param("paste");
 
print "<form method=\"post\"
 enctype=\"multipart/form-data\" action=\"filez.un\">";
 print "<input type=\"file\" name=\"paste\">";
 print "<input type=\"submit\" value=Upload>";
 print "</form>";
 
 open FI, ">$paste";
binmode FI; 
while(<$paste>){
     print FI;
 };
 close FI;

---
Вариантов два: либо играйся с enctype формы, либо уже на... 10.09.04 15:15  
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка>
Вариантов два: либо играйся с enctype формы, либо уже на серваке предварительно всё восстанавливай. Хотя это и не всегда возможно. Так что лучше первое.
расскажи, пожплуйста, поподробнее, а то я слабо представляю... 11.09.04 01:48  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
расскажи, пожплуйста, поподробнее, а то я слабо представляю себе, о чем идет речь...
Значит, у каждой формы есть такой необязательный атрибут,... 11.09.04 21:22  
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка>
Значит, у каждой формы есть такой необязательный атрибут, как enctype. По умолчанию он обычно имеет значение "application/x-www-urlencoded" (ещё часто пишут ".../x-www-form-urlencoded") или "text/plain". Чаще первое. Он как раз и указывает, как именно кодировать передаваемые формой данные. Указывается в формате MIME (RFC 1521).

Вот, в общем-то, и всё. То есть если Ты передаёшь jpeg-картинку, то enctype желательно указать "image/jpeg" (за достоверность не ручаюсь - точно не помню, но вроде так).

Для передачи совершенно любых файлов применяется "application/octet-stream" - правда, там достаточно мудрёное кодирование, но разобраться можно. Да и потом есть библиотеки для работы с ним. Вот, в принципе, и всё.

RFC 1521 (русский; очень сильно урезаный, но полезный для получения общего представления)
Большое спасибо за информацию. 13.09.04 09:24  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
Большое спасибо за информацию.
Тогда я сделаю так - буду смотреть расширение файла, и, исходя из него уже ставить тип encode...
Не получится 13.09.04 20:25  
Автор: Heller <Heller> Статус: Elderman
Отредактировано 13.09.04 20:28  Количество правок: 1
<"чистая" ссылка>
Encode - это атрибут формы. Ты не можешь заранее знать, файл с каким расширением отправят - за кодирование отвечает браузер. Поэтому используй "application/octet-stream" - он универсален. Или, если форма имеет несколько полей, "multipart/form-data".

Экземпл в тему
дык я и использую "multipart/form-data" и происходят эта... 14.09.04 08:02  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
дык я и использую "multipart/form-data" и происходят эта порча архивов и картинок....
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach