我正在尝试使用 rails 3.1.3 和回形针进行 ajax 上传。
我发现这个解决方案可以解决我的问题Rails 3 get raw post data and write it to tmp file,但是使用这个,我得到一个“编码undefined conversion
错误” "\xFF" from ASCII-8BIT to UTF-8
。
错误发生在该行@user.photo = @user.photo = QqFile.parse(params[:qqfile], request)
我没有编辑上一个答案中提供的代码,但我会在此处包含它,这样您就不必来回切换。
宝石清单回形针,返回2.5.2, 2.4.5, 2.3.8
我的控制器
定义创建 @user = User.new(params[:user]) @user.photo = QqFile.parse(params[:qqfile], 请求) 如果@user.save 返回渲染:json => @user 别的 返回渲染:json => @user.errors 结尾 结尾
qq_file.rb
# 编码:utf-8 需要“摘要/sha1” 需要“哑剧/类型” # 用法(回形针示例) # @asset.data = QqFile.new(params[:qqfile], request) 类 QqFile < ::Tempfile def 初始化(文件名,请求,tmpdir = Dir::tmpdir) @original_filename = 文件名 @request = 请求 超级摘要::SHA1.hexdigest(文件名), tmpdir 拿来 结尾 def self.parse(*args) 返回 args.first 除非 args.first.is_a?(String) 新的(*参数) 结尾 def 获取 self.write @request.raw_post 自倒带 自己 结尾 def original_filename @original_filename 结尾 定义内容类型 类型 = MIME::Types.type_for(@request.content_type) 类型.空的?? @request.content_type :types.first.to_s 结尾 结尾