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



我在本地WEBrick服务器上使用RubyonRails。

我正在从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

因为第一个CCD_ 4之后的所有内容都被认为是查询字符串的一部分。

用连字符代替斜杠是不够的,你仍然会给混乱和邪恶的意图留下各种各样的漏洞。相反,您应该完全生成图像文件名,类似于id.jpg,其中id是数据库中图像的ID。然后,将原始文件名存储在数据库中,只向用户显示该文件名(正确编码!(,不要在本地文件系统中使用它。

一个快速的解决方案是正确地对src属性进行URL编码。但你真的应该解决你如何处理这些图像,否则你会给自己带来各种麻烦。

您需要将图像放在public/文件夹中,然后才能从那里访问它们。默认情况下,Rails将主要从public/为静态资产提供服务器。

相关内容

  • 没有找到相关文章

最新更新