1

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
  終わり
終わり
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 に答える