Rubyでは、open-uriでリモートファイルを開くと、ファイルオブジェクトのパスは、/tmp/20120329-2113-1-0762/open-uri20120329-1-7dit2c
のようになります。私は存在するファイルの拡張子に依存するいくつかのファイル処理を持っています。 open-uriを使用している場合、拡張子を保持するか強制する方法はありますか?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"
コードを表示する必要があります。 Open-URIはパイプであり、ファイルを保存する責任はありません。あなたのコードはです。 –
@ theTinMan open-uriがファイルをダウンロードして保存した後、使用するためにファイルを開きます。そのファイルの拡張子が間違っています。私はそれを示すためにいくつかのコードを投稿します。 – Pablo
これは一時的なバッファとして保存していますが、最終的なファイルとして使用することはできません。 'open'から戻ってきたファイルハンドルを' read'して、あなたが望む場所に保存します。 –