ruby - 是否可以让 open-uri 维护扩展?

标签 ruby open-uri

在 Ruby 中,当你用 open-uri 打开一个远程文件时,文件对象最终有一个类似这样的路径:/tmp/20120329-2113-1-0762/open-uri20120329-1- 7dit2c。我有一些文件处理取决于存在的文件的扩展名。使用 open-uri 时,有没有办法保留扩展名甚至强制扩展名?

这是一个简短的交互,展示了当您使用 open-uri 打开一个远程文件并获取它的路径时会发生什么。该路径看起来与远程 URL 完全不同,因为它是为该对象生成的临时唯一文件,但问题是缺少扩展名:

> require "open-uri"
 => true

> f = open("http://cdn.sstatic.net/stackoverflow/img/sprites.png")
 => #<File:/var/folders/zq/vx2std7x5qj54xc1g4hpm14h0000gn/T/open-uri20120401-38087-13mm6zy>

> f.path
 => "/var/folders/zq/vx2std7x5qj54xc1g4hpm14h0000gn/T/open-uri20120401-38087-13mm6zy"

最佳答案

为什么不使用正确的/tmp 扩展名保存它,然后从那里打开它呢?这是一个额外的步骤,但当它成为瓶颈时,您可以寻找更有效的解决方案。

关于ruby - 是否可以让 open-uri 维护扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9940633/

相关文章:

ruby-on-rails - 猴子修补 use_ssl= 方法适用于 Net :HTTP but not for OpenURI in Ruby 1. 9.3?

ruby - 如何点击 Nokogori 或 Mechanize 的特定链接?

ruby - URI::InvalidURIError 尝试通过带方括号的 URL 下载时

ios - 使用 sharedApplication openURL 方法在 Safari 中使用 POST 方法打开 Url

ruby - 在 Ruby on Rails 中定义 ActiveRecord 方法以处理不同的 ActiveRecord 关系

Mac 上未识别 Ruby 版本

ruby-on-rails - 如何创建条件路由

Ruby Net::HTTP 不解码 gzip?

ruby-on-rails - UsersController 中的 ActiveRecord::RecordNotFound#destroy 无法找到 'id' =11 的项目

ruby-on-rails-3 - OpenSSL + 自签名证书 = OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed