我正在使用 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 初始化程序中,但它没有给出任何结果。
提前感谢您的帮助!
更新:
我明白,问题不在特殊符号“_”中,但事实上,我尝试上传的样本包含两个点(“.”)。我想我需要修改正则表达式以避免两个点
更新:
我很抱歉最后的评论。我已经明白,这件事根本不是特殊符号,也不是文件名。我只能从 {Rails.root} 路径上传文件的问题。如果我选择另一个目录,则会出现上述错误并且无法上传文件。如何配置 Carrierwave 路径目录?