ファイルのアップロードに 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イニシャライザでは、結果が得られません。
助けてくれてありがとう!
アップデート:
問題は特別な記号「_」ではなく、実際にアップロードしようとしているサンプルに 2 つのドット (「.」) が含まれていることを理解しました。2つのドットを避けるために、正規表現を変更する必要があると思います
アップデート:
最後のコメントで申し訳ありません。問題は特別な記号ではなく、ファイルの名前でもないことを理解しました。{Rails.root} パスからしかファイルをアップロードできない問題。別のディレクトリを選択すると、前述のエラーが発生し、ファイルをアップロードできません。Carrierwave パス ディレクトリを設定するにはどうすればよいですか?