在视图中显示带有空格和其他符号的文件名

时间:2013-08-09 05:46:08

标签: ruby nokogiri mechanize

我有这个代码来保存用nokogiri和机械化抓取的图像:

img_url = agent.page.at(".field-content a")[:href]
root_img_url = URI.join(page_url,img_url).to_s
cover = File.basename(URI.decode(root_img_url))

file = File.open(File.join(Rails.root, 'app', 'assets', 'images', cover), 'wb') { |f|
  f.write(open(root_img_url).read)
}

Book.create(
  :cover => cover
)

在我看来,我有:

<%= image_tag book.cover %>

我的问题是,某些文件名最终看起来像图书&#39; 25 b&amp; w_chap 01_.jpg ,我的视图无法显示它们。

如何阅读这些文件并在观看中显示?

更新

现在正在添加downcase和gsub,如:

cover = File.basename(URI.decode(root_img_url)).downcase.gsub(/[^\w.jpg]/,"")

此修复文件名如 books25bw_chap01_.jpg

有了这个,下一步就是实现File.rename。

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

这可能是造成这些问题的两个原因:

  1. 您只是遇到文件名格式问题(使用Sring)。 您可以使用一些String类方法并将file_name更改为所需的格式。 或者它可能是符号的问题。

  2. 编码问题。使用UTF-8,您就不会遇到编码问题。

  3. 更正文件名:

    • ENG letters
    • 没有空格
    • 没有像'',\“,\:和类似的邪恶符号。

    正确的方法是将“Books'25 b&amp; w_chap 01_.jpg”重命名为“books_25_b_w_chap_01.jpg”, 当用户在服务器上或图片解析后上传图片时。或者给图片一些符合逻辑的人类可理解的名称。