ruby-on-rails - 我的应用无法从服务器加载一些图像

标签 ruby-on-rails ruby debugging file error-handling

我在本地WEBrick服务器上使用Ruby on Rails。

我正在从URL生成一些网站图像,将它们写入我的本地文件系统,然后显示它们。我用图像的URL命名图像,但将所有\替换为-。一些图像似乎没有加载,因为它无法在文件系统上找到图像,并且出现了损坏的图像图标。但是,当我检查文件系统时,我看到所有图像都在那里。

这是我在日志中看到的错误:

Started GET "/images/image_site/http:--www.urbandictionary.com-define.php?term=slim%20shady.jpg?1309465379" for 127.0.0.1 at Thu Jun 30 13:23:06 -0700 2011

ActionController::RoutingError (No route matches "/images/image_site/http:--www.urbandictionary.com-define.php"):

这是我的html代码:
<img alt="Http:--www.urbandictionary.com-define.php?term=slim%20shady" class="site_image" src="/images/image_site/http:--www.urbandictionary.com-define.php?term=slim%20shady.jpg?1309465379">

怎么回事,我该如何解决?如果需要提供更多信息,请告诉我。

最佳答案

好像您没有在src属性中正确编码图像名称。我猜您有一个名称如下的文件:

http:--www.urbandictionary.com-define.php?term=slim%20shady.jpg

但是当你有这个:
src="/images/image_site/http:--www.urbandictionary.com-define.php?term=slim%20shady.jpg?1309465379"

文件名看起来像这样:
/images/image_site/http:--www.urbandictionary.com-define.php

因为第一个?之后的所有内容都被视为查询字符串的一部分。

用连字符替换斜杠还不够好,您仍然会留下各种漏洞,以免造成混淆和恶意。相反,您应该完全生成图像文件名,类似于id.jpg,其中id是数据库中图像的ID。然后,将原始文件名存储在数据库中,仅向人们显示该文件名(正确编码!),不要在本地文件系统中使用它。

一个快速的解决方法是正确地对您的src属性进行URL编码。但是,您确实应该修正处理图像的方式,否则您将面临各种麻烦。

关于ruby-on-rails - 我的应用无法从服务器加载一些图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6539882/

相关文章:

ruby-on-rails - 以 Rails 形式处理 MongoMapper EmbeddedDocument

c++ - 调试优化的 C/C++ 程序的有效方法是什么?

jQuery悬停背景颜色

ruby-on-rails - rails 3 : fields_for showing blank filed on Edit view

ruby-on-rails - 从现有模型/数据库设计安装

ruby - 检查 Ruby HTTP 响应是否成功

ruby-on-rails - Ruby:找到 10 到 9999 之间的左截断素数(有效)

javascript - 有一个响应按钮

c# - Visual Studio 2010 卡在跟踪点上

.net - IIS 中的 .NET 代码出现堆栈溢出,但 Winforms 中没有