информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыАтака на InternetСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / web building
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Точно так же 11.08.04 08:38  Число просмотров: 3147
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка>
<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: 1 s   Design: Vadim Derkach