iteye_3589 2009-06-21 16:49
浏览 236
已采纳

Rails中图片名是中文的时候找不到图片

[color=blue]http://localhost:3000/images/products/地铁.jpg[/color]

在在项目的images/products目录中有一个名为 地铁.jpg的图片文件 ,可是我在浏览器中请求上面的地址,却提示:
[size=large]Routing Error[/size]

[color=red]No route matches "/images/products/%E5%9C%B0%E9%93%81.jpg" with {:method=>:get}[/color]

这个问题是怎么回事呢?与字符编码有文件吗?
环境:我是在xp上开发的
[b]问题补充:[/b]
[quote="nt大哥"]
URL 是不允许中文的,所以"地铁"被你的浏览器自动转义成 UTF-8 序列 "%E5%9C%B0%E9%93%81" 了,而 "%E5%9C%B0%E9%93%81.jpg" 这个文件的确是不存在 ……
[/quote]

这种方法我试过:我将图片文件 夹中的地铁.jpg重命名为%E5%9C%B0%E9%93%81.jpg
然后再请求:http://localhost:3000/images/products/地铁.jpg
或者http://localhost:3000/images/products/%E5%9C%B0%E9%93%81.jpg

还是出现以上的路由提示错误。我请求http://localhost:3000/images/rails.png是可以看到rails的logo的。

我在各个浏览器上都测试验了,还是出现刚才的问题。

你是用的自己写的图片上传方法,至于你说的用插件,我不能采用,到时候移到JRUBY环境,java平台的tomcat中有些问题。

难道就没有解决方案吗?你说的[color=red]URL 是不允许中文的[/color]我感觉 不正确,我在网上看到有用中文url的,这个就是:
http://zoomtype.info/虚拟主机
[b]问题补充:[/b]
:( 还是没有解决问题

  • 写回答

8条回答 默认 最新

  • xenocide 2009-06-23 20:21
    关注

    唔,有点问题。

    改良一下,浏览器的名字不会变,而且不会产生循环跳转了:
    路由:
    [code="ruby"]map.connect 'product/images/:name.:ext', :controller => 'img_redirect', :action => 'show'[/code]

    img_redirect_controller.rb
    [code="ruby"]
    require 'iconv'
    class ImgRedirectController < ApplicationController
    def show
    name = Iconv.conv 'gb2312','utf-8', params[:name]
    file = "#{RAILS_ROOT}/public/images/#{name}.#{params[:ext]}"
    if File.exist? file
    send_file file, :type => "image/#{params[:ext]}", :disposition => 'inline'
    else
    render :text => 'file not exist'
    end
    end
    end
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)