ошибка кодирования с загрузкой ajax (qqfile) и скрепкой - PullRequest
0 голосов
/ 04 февраля 2012

Я пытаюсь загрузить ajax, работая с рельсами 3.1.3 и скрепкой.

Я нашел решение моей проблемы Rails 3 получает необработанные данные постов и записывает их в файл tmp , но, используя это, я получаю 'encoding undefined conversion error "\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

мой контроллер

 def create


    @user = User.new(params[:user])

    @user.photo = QqFile.parse(params[:qqfile], request)
    if @user.save
        return render :json => @user
    else
        return render :json => @user.errors
    end
  end

qq_file.rb

# encoding: utf-8
require 'digest/sha1'
require 'mime/types'

# Usage (paperclip example)
# @asset.data = QqFile.new(params[:qqfile], request)
class QqFile < ::Tempfile

  def initialize(filename, request, tmpdir = Dir::tmpdir)
    @original_filename  = filename
    @request = request

    super Digest::SHA1.hexdigest(filename), tmpdir
    fetch
  end

  def self.parse(*args)
    return args.first unless args.first.is_a?(String)
    new(*args)
  end

  def fetch
    self.write @request.raw_post
    self.rewind
    self
  end

  def original_filename
    @original_filename
  end

  def content_type
    types = MIME::Types.type_for(@request.content_type)
      types.empty? ? @request.content_type : types.first.to_s
  end
end

1 Ответ

0 голосов
/ 08 февраля 2012

Это была ошибка кодирования, связанная с Ruby 1.9.2 (или я считаю, Ruby 1.9+).этот пост на github приводит к ответу https://github.com/lassebunk/webcam_app/issues/1

Вы должны указать raw_post.force_encoding("UTF-8") при чтении загрузки, насколько я могу судить (я не большой программист).

...