Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
|
[php] А то же самое в php? 11.08.04 08:33 Число просмотров: 3389
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
|
А то же самое в пхп как будет выглядеть?
|
<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" и происходят эта порча архивов и картинок....
|
|
|