【发布时间】:2013-11-13 13:54:15
【问题描述】:
我正在使用 Carrierwave 进行文件上传,并获得了以下表单,它允许我提交多个文件:
<%= form_tag load_patterns_contacts_path, multipart: true, multiple: true do %>
<%= file_field_tag 'qqfile[]', id: "upload_pattern", multiple: true %>
<%= submit_tag "Load", id: "save_pattern", :class => 'btn btn-primary btn-success', multiple: true%>
<% end %>
这是我的控制器中的代码,它将提交的文件加载到服务器:
@uploader = EmailPatternsUploader.new
params[:qqfile].each do |p|
tempfile = open(p.original_filename)
puts tempfile
@uploader.store!(tempfile)
end
redirect_to contacts_path
flash[:success] = "Uploaded successfully."
如果文件名看起来像“text.xlsx”、“image.jpg”等,它工作正常。但如果它包含像“_partial.html.erb”这样的特殊符号,那么我有 Errno:ENOENT(没有这样的文件或目录 - _partial.html.erb)
我已经尝试添加
CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:]\.\_\-\+]/
在我的 carrierwave.rb 初始化程序中,但它没有给出任何结果。
提前感谢您的帮助!
更新:
我明白,问题不是特殊符号“_”,而是事实上,我尝试上传的样本包含两个点(“.”)。我想我需要修改正则表达式以避免两个点
更新:
我为最后的 cmets 感到抱歉。我明白,这件事根本不是特殊符号,也不是文件名。 我只能从 {Rails.root} 路径上传文件的问题。如果我选择另一个目录,则会出现上述错误并且无法上传文件。如何配置载波路径目录?
【问题讨论】:
-
检查了rubular上的表达式?
标签: ruby-on-rails ruby ruby-on-rails-3 carrierwave