我有这个代码来保存用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。
感谢您的时间。
答案 0 :(得分:1)
这可能是造成这些问题的两个原因:
您只是遇到文件名格式问题(使用Sring)。 您可以使用一些String类方法并将file_name更改为所需的格式。 或者它可能是符号的问题。
编码问题。使用UTF-8,您就不会遇到编码问题。
更正文件名:
正确的方法是将“Books'25 b&amp; w_chap 01_.jpg”重命名为“books_25_b_w_chap_01.jpg”, 当用户在服务器上或图片解析后上传图片时。或者给图片一些符合逻辑的人类可理解的名称。