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


Автор: usja 13.7.2006, 11:56
Имеется файл на сайте http://dddd.ddd/ddddd/d/d//dd/d/dd/rr.txt
как без импользвния курла закачать файл себе на винт?  smile  

Автор: Rubynovich 13.7.2006, 19:05
Код

reqiure 'open-uri'
my_url = 'http://dddd.ddd/ddddd/d/d//dd/d/dd/rr.txt'

File.open(File.basename(my_url),'w+'){ |file| 
    file.puts( open(my_url) )
}


А что такое курл? 

Автор: usja 14.7.2006, 10:11
а в какой файл он пишет?  

Автор: Rubynovich 14.7.2006, 16:41
В File.basename( my_url )... В данном случае -- rr.txt (он имя файла из адреса выдергивает).

ЗЫ. Программу специально растянул, чтобы понятно было. 

Автор: Akeem 14.7.2006, 23:59
Вопрос в тему. есть ссылка в виде http://ввв.вввввюввв.вввв/ввв-bin/вввввв/wget_script.pl?id=8594_№№№№&restricted=&type=data

как тогда будет выглядеть программа для закачки файла wget_script.pl ?? 

Автор: Rubynovich 15.7.2006, 11:45
Если тебе нужен wget_script.pl, то нет ничего проще и бесполезней. =) Отрезаешь basename и split'ишь по знаку вопроса. Берешь нулевой элемент.

Скорее всего имеется в виду имя файла, которое начинает предавать wget_script.pl. А это уже совсем другая задача. Надо читать заголовки и вытаскивать оттуда имя передаваемого файла. Обычно имя хранится в параметре Content-type

Код

require 'open-uri'
url = "http://ввв.вввввюввв.вввв/ввв-bin/вввввв/wget_script.pl?id=8594_№№№№&restricted=&type=data"
open( url ){ |http|
    File.open( http.content_type[ /(name=)"?(.+?)"?/, 2 ] ){ |file|
        file.puts http.read
    }
}


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

PS. Программа писалась в браузере и не тестировалась на работоспособность. 

Автор: Rubynovich 15.7.2006, 12:02
Протестить не на чем. Могу предложить вариант для тестирования.
Код

require 'open-uri'
require 'pp'
url = "http://ввв.вввввюввв.вввв/ввв-bin/вввввв/wget_script.pl?id=8594_№№№№&restricted=&type=data"
pp open( url ).meta


Выдаст хеш заголовка... там и надо искать имя. 

Автор: Akeem 16.7.2006, 10:06
Спасибо.  

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