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
アップロード中または表示中にエラーが発生しましたか? – Baldrick
'@ user.photo'という行で 'create'の間にエラーが発生した場合は、質問を更新します。 – pedalpete