我有一个图像的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. 下载文件并将其保存在独立存储
- 5. 如何从网络上下载文件并将其保存在设备上
- 6. 下载从URL文件并保存到内存盘的Android
- 7. 如何下载图像并将其保存在Android中
- 8. 下载在线音频流并将其保存在零件中
- 9. 如何从url下载文件并存储在文档文件夹中
- 10. 如何从url下载.docx文件并在Android上保存为.doc
- 11. 从URL加载png并将其保存并显示出来
- 12. 从url下载文件并保存到iPhone上的资源
- 13. 如何使用JAVA从互联网下载zip文件并将其保存在特定文件夹中?
- 14. iPhone:如何下载媒体文件并将其保存在设备上
- 15. ObjC下载文件并将其保存到目录
- 16. 下载PDF文件并将其保存到SD卡
- 17. 下载文件并将其保存到SD卡
- 18. 下载URL的内容,并将其保存
- 19. 如何下载PDF并将其本地保存在iPhone上?
- 20. 如何将下载的文件保存在缓存中android
- 21. 下载并保存JMeter中的文件
- 22. Rails的:如何从HTTP下载文件并保存到数据库
- 23. 如何从窗口天蓝色下载并保存大文件?
- 24. 如何从互联网下载文件并保存在iPhone上的“文档”中?
- 25. 从任何给定的URL下载文件,并将其保存到我的机器与ASP.NET
- 26. 从服务器下载文件并将其保存到客户端
- 27. 从http URL下载文件,并将其保存在我的iPhone上供以后使用?
- 28. 如何加载文件并将其保存在Android对象列表中?
- 29. 如何使用Django和Python下载文件并将其保存在上传文件夹中
- 30. 下载并保存文件并保留相同的文件名
这工作。谢谢。我在图片上试过这个。图像未正确写入文件。就好像它已经被损坏或者其他东西一样。你也可以指导我在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