我有这个代码来保存用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 %>
我的问题是,有些文件名最终看起来像这样;w_chap 01_.jpg,我的视图无法显示它们。
如何读取这些文件并在视图中显示?
更新
现在工作添加下变频器和类似的gsub:
cover = File.basename(URI.decode(root_img_url)).downcase.gsub(/[^w.jpg]/,"")
这修复了文件名,如books25bw_chap01_.jpg
这样,下一步就是实现File.rename.
谢谢你抽出时间。
这可能是导致此问题的两个原因:
-
您只是在文件名格式(使用Sring)方面有问题。您可以使用一些String类方法,并将file_name更改为所需的格式。或者可能是"符号有问题。
-
编码问题。使用UTF-8,编码就不会有问题。
正确的文件名:
- ENG字母
- 没有空格
- 没有像"、"、:和类似的邪恶符号
正确的方法是将"Books'25 b&w_chap 01_.jpg"重命名为类似于"Books_25_bw_chap_01.jpg"的smth,当用户在服务器上传图片时,或者在图片被解析后。或者给图片取一个合乎逻辑的、人类可以理解的名字。