如何从 URL 下载文件并将其保存在 Rails 中?
我有一个要保存在本地的图像的 URL,以便我可以使用 Paperclip 为我的应用程序生成缩略图。下载和保存图像的最佳方式是什么? (我研究了 ruby 文件处理,但没有遇到任何问题。)
I have a URL to an image which i want to save locally, so that I can use Paperclip to produce a thumbnail for my application. What's the best way to download and save the image? (I looked into ruby file handling but did not come across anything.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
试试这个:
Try this:
更短的版本:
要保持相同的文件名:
An even shorter version:
To keep the same filename:
如果您使用 PaperClip,现在会自动处理从 URL 下载。
假设您有类似的内容:
在您的模型上,只需将图像指定为 URL,类似这样的内容(用故意的手写体编写):
您可能希望将其放入模型中的方法中。这在 Heroku 的临时文件系统上也能正常工作。
回形针将从那里取出它。
来源:回形针文档
If you're using PaperClip, downloading from a URL is now handled automatically.
Assuming you've got something like:
On your model, just specify the image as a URL, something like this (written in deliberate longhand):
You'll probably want to put this in a method in your model. This will also work just fine on Heroku's temporary filesystem.
Paperclip will take it from there.
source: paperclip documentation
我认为这是最明确的方法:
I think this is the clearest way:
可能是最简单的方法:
Possibly the simplest way:
查看 Net::HTTP 中标准库。该文档提供了几个有关如何使用 HTTP 下载文档的示例。
Check out Net::HTTP in the standard library. The documentation provides several examples on how to download documents using HTTP.
使用 Ruby 3 及更高版本,您将使用接受的答案得到以下错误:
解决方案是使用
URI.open
代替Kernel.open
。例子:Using Ruby 3 and above, you'll get the following error using the accepted answer:
The solution is to use
URI.open
in place of theKernel.open
. Example:上面的例子都很棒。
就我而言,我只想从 URL 中的图像创建下载链接。
如果您想让它可下载(到您的下载文件夹),您可以在控制器中使用以下代码:
All above examples are great.
In my case I just wanted to create a download link from the image from URL.
If you want to make it downloadable (to your downloads folder), you can use the following code in your controller: