我有一个图像的URL,我想要在本地保存,以便我可以使用Paperclip为我的应用程序生成缩略图。下载和保存图像的最佳方式是什么? (我看着红宝石文件处理,但没有碰到任何东西。)如何从URL下载文件并将其保存在Rails中?
回答
试试这个:
require 'open-uri'
open('image.png', 'wb') do |file|
file << open('http://example.com/image.png').read
end
在标准库中检出Net::HTTP。该文档提供了几个关于如何使用HTTP下载文档的示例。
如果您使用回形针,从网址下载现在是自动处理。
假设你有这样的:
class MyModel < ActiveRecord::Base
has_attached_file :image, ...
end
您的手机型号,只需指定图像的URL,像这样(写在故意手写):
@my_model = MyModel.new
image_url = params[:image_url]
@my_model.image = URI.parse(image_url)
你”你可能想把它放在你的模型中。这也可以在Heroku的临时文件系统上正常工作。
回形针将从那里采取。
对于未来的搜索者,回形针不再允许默认情况下:https://medium.com/in-the-weeds/all-about-paperclips -cve-2017-0889-server-side-request-forgery-ssrf-vulnerability-8cb2b1c96fe8 – 2018-01-31 01:04:20
更短的版本:
require 'open-uri'
download = open('http://example.com/image.png')
IO.copy_stream(download, '~/image.png')
为了保持相同的文件名:
IO.copy_stream(download, "~/#{download.base_uri.to_s.split('/')[-1]}")
而且效率更高,因为输出不会作为字符串存储在内存中。 +1 – 2016-06-03 18:56:34
虽然这两个答案都显示实际上很有用,所以像我这样的人可以看到两者,思考差异,然后有意识地选择这个答案,以获得正确的理由:) – 2017-03-17 18:25:41
我觉得这是最清楚的方式:
require 'open-uri'
File.write 'image.png', open('http://example.com/image.png').read
- 1. Rails:从URL保存文件并将其保存到Amazon S3
- 2. 从URL通过宏下载文件,并将其保存在一个位置
- 3. android studio下载pdf文件并将其保存在sharedpreferences中
- 4. 从Url获取值并将其保存在txt文件中
- 5. 从URL获取GET值并将其保存在文件中
- 6. 下载文件并将其保存在独立存储
- 7. 如何从网络上下载文件并将其保存在设备上
- 8. 下载文件并将其自动保存到文件夹
- 9. 下载从URL文件并保存到内存盘的Android
- 10. C#如何下载程序并将其保存在启动文件夹中
- 11. 如何从URL下载图像并将其保存到我的电脑?
- 12. 如何下载图像并将其保存在Android中
- 13. 如何使用AFNetworking下载文件并将其保存到文档目录中?
- 14. 下载在线音频流并将其保存在零件中
- 15. 怎样下载(.sqlite)从URL文件并将其保存在独立存储中的Windows Phone 8个应用
- 16. 如何从url下载文件并存储在文档文件夹中
- 17. 如何从url下载.docx文件并在Android上保存为.doc
- 18. 从URL加载png并将其保存并显示出来
- 19. 从url下载文件并保存到iPhone上的资源
- 20. 从url下载文件并将其保存到java中的服务器上的文件夹
- 21. 下载MP3文件,保存到磁盘,并将其作为URL读取
- 22. 如何使用JAVA从互联网下载zip文件并将其保存在特定文件夹中?
- 23. 如何从文件下载弹出框下载文件并保存它
- 24. 如何下载PDF文件并将其保存在ipad BD通过XML解析
- 25. iPhone:如何下载媒体文件并将其保存在设备上
- 26. 下载PDF文件并将其保存到SD卡
- 27. ObjC下载文件并将其保存到目录
- 28. 下载文件并将其保存到SD卡
- 29. 下载URL的内容,并将其保存
- 30. 如何下载PDF并将其本地保存在iPhone上?
这工作。谢谢。我在图片上试过这个。图像未正确写入文件。就好像它已经被损坏或者其他东西一样。你也可以指导我在Rails应用程序中做同样的事情。我可以在Rails应用程序中使用它吗? – 2010-03-26 03:49:26
是的,您可以在导轨应用程序中使用它。文件写入不正确可能是因为我忘记了在写入二进制模式下打开目标。我现在编辑它。 – Levi 2010-03-26 04:16:12
也应该是'file << open('http://example.com/image.png').read' – mraaroncruz 2011-03-23 14:43:09