2017-03-26 31 views
0

Ionic 2アプリで作業しています。携帯電話からサーバーにファイルをアップロードしようとしています。このユーザーのコードはFileTransferプラグインです。 FileTransferdocsActionController :: BadRequest(無効なリクエストパラメータ:無効な%-encoding)

変数をFileTransferオブジェクトはHTTP マルチパートPOSTまたはPUT要求を使用してファイルをアップロードすると、ファイルをダウンロードする方法を提供します。

これは、画像をアップロードするために、私のイオンのコードで、

fileUpload(filePath: string,apiEndpoint: string){ 
    this.fileTransfer = new Transfer(); 
    let fileName = filePath.substr(filePath.lastIndexOf('/') + 1); 
    let options = Object.assign(this.httpHeader(),{chunkedMode: false, fileName: fileName}); 
    return this.fileTransfer.upload(filePath, apiEndpoint, options) 
    .then((data) => { 
     return data; 
    }).catch(this.handleError); 
    } 

ファイルパスを取得して、それを自分のレールバックエンドにアップロードします。私が持っているレールでは、

def update_picture 
    @user = current_user.update_picture(params[:file]) 
    if @user.save 
     render_create_success 
    else 
     render_create_errorn 
    end 
    end 

開発と運用環境では、すべて私のローカルマシンで正常に動作します。しかし、一度herokuにプッシュするとエラーになります。私が正しいだ場合

Started POST "/v1/update_picture" for 
ActionController::BadRequest (Invalid request parameters: invalid %-encoding ("file"; filename="tmp_IMG-20170321-WA0000972448512.jpg" 
Content-Type: image/jpeg 
����JFIF��C 
vendor/bundle/ruby/2.3.0/gems/rack-2.0.1/lib/rack/query_parser.rb:72:in `rescue in parse_nested_query' 

は、Content-Typemultipart/form-dataでなければならず、データがURLエンコードされたときに、このエラーが発生しなければなりません。私のプロジェクトはこの問題に固執しています。私は知りたいです

  1. URLがエンコードされていないと、このエラーの原因は何ですか?
  2. これをどのようにデバッグできますか?ローカルマシンでも英雄でも問題はありません。

    編集

file uploadchunkModeオプションがオンになったとき、私は開発中の同様のエラーが発生しました。私はそれを偽に設定し、エラーはなくなった。詳細を知りたい場合は、追加します。どんな助けもありがとう。

答えて

0

最後に問題が見つかりました。そのコードバウのバグFileTransferプラグイン1.6.0。 https接続でchunkedModeを強制的にオンにします。 1.6.2に更新すると問題が解決しました。