1

我正在尝试使用 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
  结尾
结尾
4

1 回答 1

0

这是与 Ruby 1.9.2(或者我相信是 Ruby 1.9+)相关的​​编码错误。这个 github 帖子导致了答案 https://github.com/lassebunk/webcam_app/issues/1

据我所知,您必须raw_post.force_encoding("UTF-8")在阅读上传时指定(我不是一个伟大的程序员)。

于 2012-02-08T14:07:54.850 回答