PDF用のアップローダーがあります。ファイル名にスペースが含まれている場合、それらはアンダースコアを使用するように自動的に変換されます。
some file test
-> some_file_test
スペースを確保したいのですが。誰か教えてもらえますか?
私は試した:
def filename
original_filename
end
空白を追加することで、正規表現のサニタイズをオーバーライドできます。
CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:]\.\-\+\ ]/
ご覧のとおり、この正規表現は、禁止されている記号をアンダースコアに置き換えるsanitize
メソッドで使用されています。
ファイル名とUnicode文字
注意すべきもう1つのセキュリティ問題は、ファイル名です(Ruby On Railsセキュリティガイドを参照)。デフォルトでは、CarrierWaveは、ファイル名のホワイトリストに登録された文字として、英語の文字、アラビア数字、および一部の記号のみを提供します。ローカルスクリプト(キリル文字、発音区別符号付きの文字など)をサポートする場合は、
sanitize_regexp
メソッドをオーバーライドする必要があります。許可されていないすべての記号に一致する正規表現を返す必要があります。CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:]\.\-\+]/
また、ラテン文字以外の文字を許可しても、サードパーティのプラグインやクライアント側のソフトウェアとの互換性の問題が発生しないことを確認してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加