Ruby on rails 在Rails中上载文件之前,如何删除特殊字符?
我正在使用Carrierwave x Rails。基本上,我在AmazonS3字符串匹配方面遇到了一些问题&我认为在上传文件之前删除所有特殊字符,例如括号和重音符号(以及空格)会更容易 所以,我想知道的是,在将文件上传到rails之前,如何从文件名中删除特殊字符 先谢谢你Ruby on rails 在Rails中上载文件之前,如何删除特殊字符?,ruby-on-rails,carrierwave,Ruby On Rails,Carrierwave,我正在使用Carrierwave x Rails。基本上,我在AmazonS3字符串匹配方面遇到了一些问题&我认为在上传文件之前删除所有特殊字符,例如括号和重音符号(以及空格)会更容易 所以,我想知道的是,在将文件上传到rails之前,如何从文件名中删除特殊字符 先谢谢你 已解决。对于其他面临相同或类似问题的人,请阅读下面我的答案中的解决方案。干杯:)检查参数化方法。尝试打开Uploader类,在底部找到处理文件名的代码。也许您可以在此处调用前面提到的to_params方法: # Overri
已解决。对于其他面临相同或类似问题的人,请阅读下面我的答案中的解决方案。干杯:)检查
参数化方法。尝试打开Uploader类,在底部找到处理文件名的代码。也许您可以在此处调用前面提到的to_params方法:
# Override the filename of the uploaded files:
# Avoid using model.id or version_name here, see uploader/store.rb for details.
def filename
original_filename.to_param if original_filename?
end
如果需要更详细的定制,请查看文档请使用正则表达式删除参数
word = "did & I ^% helped"
word.gsub(/[^a-z0-9]/i, '')
result => "didIhelped"
对其他人来说,这就是我解决问题的方法:我基本上在我的js文件(“我的控制器的URI.escape”)中使用了“encodeURI/encodeURIComponent”将我的文件发送到已经编码的S3,这样S3签名将匹配我的字符串您可以在您的*\u uploader.rb中写入Carrierwave方法:filename:
# Override the filename of the uploaded files:
# Avoid using model.id or version_name here, see uploader/store.rb for details.
def filename
original_filename.gsub(/([\s\-_\[\]\{\}\*\']|%20)+/i, "-") if original_filename
end
嘿,谢谢你的回复。我知道这一点,但我正在寻找一种方法,这样做之前上传文件。在上传文件之前,您将如何参数化文件名?嗯,我从未使用Carrierwave,但我猜您可能会执行类似于file=whatch.to_file(文件名)的操作.parameterize.Underline
然后file.send
或类似内容。感谢您的回复,但此答案不符合我的问题我已对Carrier进行了大量修改,目前这可能对我不起作用,但谢谢@ksc如何使用JS更改文件名?出于安全考虑,你不能这么做?