相关疑难解决方法(0)

如何从URL下载文件并将其保存在Rails中?

我有一个图像的URL,我想在本地保存,以便我可以使用Paperclip为我的应用程序生成缩略图.下载和保存图像的最佳方法是什么?(我查看了ruby文件处理,但没有遇到任何问题.)

ruby ruby-on-rails file-handling

189
推荐指数
6
解决办法
12万
查看次数

Ruby open-uri重定向被禁止

我有这个简单的html解析器(用于学习目的),我一直在研究:

require 'open-uri'
puts "Enter URL to parse HTML: "
url = gets.chomp
puts "Enter tag to parse from: "
tag = gets.chomp
response = open(url).read
title1 = response.index(tag)
title2 = response.index(tag.insert(1,'/')) -1
result = response[(title1 + tag.length - 1)..title2]
print result 
Run Code Online (Sandbox Code Playgroud)

当我输入时http://twitter.com,我收到此错误消息:

ERROR: `open_loop': redirection forbidden: http://twitter.com -> https://twitter.com/ (RuntimeError)
from /usr/local/rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/open-uri.rb:149:in `open_uri'
from /usr/local/rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/open-uri.rb:704:in `open'
from /usr/local/rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/open-uri.rb:34:in `open'
from /home/ubuntu/workspace/htmlparse.rb:6:in `<main>' 
Run Code Online (Sandbox Code Playgroud)

有任何建议或帮助吗?我是Ruby新手,我知道其他html解析模块,但我这样做是为了学习Ruby基础知识.谢谢.

ruby open-uri

35
推荐指数
3
解决办法
2万
查看次数

如何通过HTTP将图像文件下载到临时文件中?

我已经找到了用于下载图像文件的NET :: HTTP的好例子,我发现了创建临时文件的很好例子.但我不知道如何将这些库一起使用.即,如何在下载二进制文件的代码中创建临时文件?

require 'net/http'

Net::HTTP.start("somedomain.net/") do |http|
    resp = http.get("/flv/sample/sample.flv")
    open("sample.flv", "wb") do |file|
        file.write(resp.body)
    end
end
puts "Done."
Run Code Online (Sandbox Code Playgroud)

ruby uri net-http

24
推荐指数
3
解决办法
2万
查看次数

从URL下载图像?

我正在尝试使用HTTP :: get从我创建的URL下载Google图表的图像.

这是我的第一次尝试:

failures_url  = [title, type, data, size, colors, labels].join("&")

require 'net/http'

Net::HTTP.start("http://chart.googleapis.com") { |http|
  resp = http.get("/chart?#{failures_url")
  open("pie.png" ,"wb") { |file|
    file.write(resp.body)
  }
}
Run Code Online (Sandbox Code Playgroud)

其中只生成一个空的PNG文件.

对于我的第二次尝试,我使用failure_urlhttp.get()调用内部存储的值.

require 'net/http'

Net::HTTP.start("http://chart.googleapis.com") { |http|
  resp = http.get("/chart?chtt=Builds+in+the+last+12+months&cht=bvg&chd=t:296,1058,1217,1615,1200,611,2055,1663,1746,1950,2044,2781,1553&chs=800x375&chco=4466AA&chxl=0:|Jul-2010|Aug-2010|Sep-2010|Oct-2010|Nov-2010|Dec-2010|Jan-2011|Feb-2011|Mar-2011|Apr-2011|May-2011|Jun-2011|Jul-2011|2:|Months|3:|Builds&chxt=x,y,x,y&chg=0,6.6666666666666666666666666666667,5,5,0,0&chxp=3,50|2,50&chbh=23,5,30&chxr=1,0,3000&chds=0,3000")
  open("pie.png" ,"wb") { |file|
    file.write(resp.body)
  }
}
Run Code Online (Sandbox Code Playgroud)

并且,出于某种原因,即使第一次尝试在http.get()调用中具有相同的数据,此版本仍然有效.有人知道为什么吗?

解:

在试图弄清楚为什么会发生这种情况后,我发现" 如何通过HTTP下载二进制文件? ".

其中一条评论提到http://Net::HTTP.start(...)电话会议中删除,否则将无法成功.我这样做之后果然:

failures_url  = [title, type, data, size, colors, labels].join("&")

require 'net/http'

Net::HTTP.start("chart.googleapis.com") { |http|
  resp = http.get("/chart?#{failures_url")
  open("pie.png" ,"wb") { |file| …
Run Code Online (Sandbox Code Playgroud)

ruby httpwebrequest javax.imageio

21
推荐指数
1
解决办法
3万
查看次数

18
推荐指数
5
解决办法
1万
查看次数

如何在使用Ruby的OpenUri下载之前获取HTTP头

我目前正在使用OpenURI在Ruby中下载文件.不幸的是,似乎无法在不下载完整文件的情况下获取HTTP标头:

open(base_url,
  :content_length_proc => lambda {|t|
    if t && 0 < t
      pbar = ProgressBar.create(:total => t)
  end
  },
  :progress_proc => lambda {|s|
    pbar.progress = s if pbar
  }) {|io|
    puts io.size
    puts io.meta['content-disposition']
  }
Run Code Online (Sandbox Code Playgroud)

运行上面的代码表明它首先下载完整的文件,然后才打印我需要的标题.

有没有办法在下载完整文件之前获取标题,所以如果标题不是我期望的那样,我可以取消下载?

ruby open-uri http-headers

9
推荐指数
2
解决办法
4460
查看次数

在 Ruby/Rails 中读取远程 MP3 文件的 ID3 标签?

使用 Ruby,如何在不将整个文件下载到磁盘的情况下解析远程 mp3 文件的 ID3 标签?

这个问题已在JavaSilverlight 中提出,但在 Ruby 中没有。

编辑:查看 Java 答案,似乎可以(HTTP 支持)只下载文件的尾端,也就是标签所在的位置。这可以在 Ruby 中完成吗?

ruby mp3 id3

6
推荐指数
1
解决办法
2074
查看次数