Rails3.1.3とペーパークリップでajaxアップロードを機能させようとしています。
私の問題に対するこの解決策を見つけました。Rails3は生の投稿データを取得してtmpファイルに書き込みますが、これを使用すると、'エンコーディング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
私のコントローラー
def create @user = User.new(params [:user]) @ user.photo = QqFile.parse(params [:qqfile]、request) @user.saveの場合 return render:json => @user そうしないと return render:json => @ user.errors 終わり 終わり
qq_file.rb
#エンコーディング:utf-8 'digest/sha1'が必要 'mime/types'が必要 #使用法(ペーパークリップの例) #@ asset.data = QqFile.new(params [:qqfile]、request) クラスQqFile<::Tempfile def initialize(filename、request、tmpdir = Dir :: tmpdir) @original_filename=ファイル名 @request=リクエスト スーパーダイジェスト::SHA1.hexdigest(ファイル名)、tmpdir フェッチ 終わり def self.parse(* args) args.first.is_a?(String)でない限り、args.firstを返します new(* args) 終わり defフェッチ self.write @ request.raw_post self.rewind 自己 終わり def original_filename @original_filename 終わり def content_type types = MIME :: Types.type_for(@ request.content_type) types.empty??@ request.content_type:types.first.to_s 終わり 終わり