Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Upload файла через https


Автор: Delp 23.10.2007, 14:43
Добрый день!

В Perl я совсем не силен. 

Подскажите пожалуйста, как через форму загрузить файл на сервер по протоколу https. Дело в том что загрузка должна работать автоматом через определенный интервал и загружать определенные файлы на сервер. Нашел кучу скриптов, но это все были web интерфейсы, а мне нужен обыкновенный скрипт, который потом будет гонять cron.

Помогите пожалуйста.

С уважением Дмитрий.

Автор: Delp 23.10.2007, 16:38
Может быть вопрос прозвучал не корректно.

Попробуем так.

Есть форма для загрузки фалов. Проходим по ссылке, вводим имя пользователя, пароль  и получаем к ней доступ. Как обычно выбираем файл, нажимаем кнопку, файл загружается.

Вопрос. Можно ли к этой форме обращаться скриптом и таким образом аплоудить файлы в автоматическом режиме?


Автор: GoodBoy 23.10.2007, 18:06
Цитата(Delp @  23.10.2007,  17:38 Найти цитируемый пост)
Можно ли к этой форме обращаться скриптом и таким образом аплоудить файлы в автоматическом режиме?

нельзя

Автор: arto 23.10.2007, 19:22
Цитата(GoodBoy @  23.10.2007,  18:06 Найти цитируемый пост)
нельзя 

почему?

Автор: Delp 24.10.2007, 08:51
мне на другом форуме ответили 

perldoc WWW::Mechanize

Автор: Delp 24.10.2007, 09:40
Вот пример загрузки одного изображения как двух различных на flickr, так что все можно

Засада только в том, что сдесь авторизация проходит через форму, а у меня авторизация проходит по другому, появлется окно где нужно ввести имя и пароль, как базовая аутентификация Apache.

Как это сдесь реализовать?

Код

# require 'rubygems'  
# require 'mechanize'  
#   
# agent = WWW::Mechanize.new  
#   
# # Get the flickr sign in page  
# page  = agent.get('http://flickr.com/signin/flickr/')  
#   
# # Fill out the login form  
# form  = page.forms.name('flickrloginform').first  
# form.email = ARGV[0]  
# form.password = ARGV[1]  
# page  = agent.submit(form)  
#   
# # Go to the upload page  
# page  = agent.click page.links.text('Upload')  
#   
# # Fill out the form  
# form  = page.forms.action('/photos_upload_process.gne').first  
# form.file_uploads.name('file1').first.file_name = ARGV[2]  
# agent.submit(form) 


Добавлено через 10 минут и 49 секунд
Кажись нашел

Код

    use MIME::Base64;

    my $agent = WWW::Mechanize->new();
    my @args = (
        Authorization => "Basic " .
            MIME::Base64::encode( USER . ':' . PASS )
    );

    $agent->credentials( ADDRESS, REALM, USER, PASS );
    $agent->get( URL, @args );

Автор: Delp 24.10.2007, 10:04
Только вот не могли бы вы помочь собрать это воедино?

Автор: fray 31.10.2007, 18:00
Цитата(Delp @ 24.10.2007,  10:04)
Только вот не могли бы вы помочь собрать это воедино?

да можно WWW::Mechanize->upload($file);  так загружать файлы на сервер, но это лишь сокращенный вариант LWP::UserAgent->post("multypart"); можно и так, а creadentials нужен только в случае base-authorized, а потом получаетете свои куки и шлёти файлы


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)