2012-02-04 17 views
0

rails 3.1.3とpaperclipで作業するajaxアップロードを取得しようとしています。ajaxアップロード(qqfile)とペーパークリップのエンコーディングエラー

この解決策は私の問題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)

で発生

私は前の回答で供給されたコードを編集していないが、あなたは前後に切り替える必要はありませんので、私はここでそれを含めます。

宝石のリストクリップが、これはRubyの1.9.2に関連したエンコーディングエラーだっ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 
+0

アップロード中または表示中にエラーが発生しましたか? – Baldrick

+0

'@ user.photo'という行で 'create'の間にエラーが発生した場合は、質問を更新します。 – pedalpete

答えて

0

返します(または私はルビーを信じます1.9+)。 アップロードを読んだとき、私が言うことができるような答えに、このgithubのポストリードは https://github.com/lassebunk/webcam_app/issues/1

あなたは(私は偉大なプログラマではないよ)限りraw_post.force_encoding("UTF-8")を指定する必要があります。

関連する問題