rails的文件上传插件file_column上传的文件名是中文时将会失败,在网上baidu了好长时间,按照里面的做法修改了好几次都还是没有成功,后来自己花了点时间研究了下,终于搞定了,修改如下:修改file_column.rb文件中最后一个方法为 def self.sanitize_filename(filename) filename = File.basename(filename.gsub("\\", "/")) # work-around for IE #将windows系统路径的\替换成/ #filename.gsub!(/[^a-zA-Z0-9\.\-\+_]/,"_") #将文件名中的除数字大小写字母.-+_之外的符号替换成_ #filename = "_#{filename}" if filename =~ /^\.+$/ #如果文件名以.(本地路径)开头则在文件名前加上_ #filename = "unnamed" if filename.size == 0 #如果文件名的长度=0,则赋予默认的名字unnamed time = Time.now.to_i filename = time.to_s + '.' + File.basename(filename).split('.').last filename end通过上面我的注释可以看到不能上传中文文件名的原因应该在于: #filename.gsub!(/[^a-zA-Z0-9\.\-\+_]/,"_") #将文件名中的除数字大小写字母.-+_之外的符号替换成_因为中文的编码问题,所以这里是出错的原因,在一般情况下可以把这行注释掉就可以了,因为后面我们把文件名给完全替换成数字了所以可以把紧接后面文件名操作的两行也注释掉,现在就行了
2008-07-28 17:52:45, 509 reviews
send to mailbox
just DO NOT support IE