2016-06-16 3 views
0

レスポンスタイプ:blobと呼ばれる$ httpで問題が発生しました。 私はJSONでエラー応答を処理したいと思いますが、サーバー上で応答のコンテンツタイプを 'application/json'として設定しても、BLOBデータを取得します。

$http.post(url, data, {responseType: 'blob'}) 
    .then(function(response) { 
    // download the file (works fine) 
    }) 
    .catch(function(error) { 
    // handle JSON response error 
    }); 

convert error dataに拒否せずに行う方法はありますか?

+0

.then()関数は、より効率的な方法で使用することができます... .then(機能(応答){}、機能(エラー){あるかどうかをチェックすることができresponseErrorinterceptorを書きますconsole.log(エラー);}); console.log()では、あなたが望む方法でそれを取得します。それを処理することができます。 –

+0

ありがとうございますが、私のプロジェクトの規約では、then()、catch()の代わりに(onSuccess、onError)を使用しています。残念ながら、onErrorコールバック内のデータがBLOB型のままであるという事実は変わりません。 –

+0

あなたは$ http({method: 'GET'、URL:Restriction.one( '添付ファイル'、idAtt).getRestangularUrl()、 ヘッダーを試すことができます:{'X-Auth-Token':token}、responseType: 'blob '}))。次に(function(response){ var url =(window.URL || window.webkitURL).createObjectURL(response.data); window.open(url); }}); –

答えて

1

成功とエラーの場合、異なるコンテンツタイプを使用することはできませんが、変換は1か所で管理できます。 error.datainstanceof BlobとJSON

に変換
+1

Aleskey、私はすでに 'Interceptor'と' FileReader'の 'readAsText'メソッドを使って修正しましたが、もっとエレガントな方法があるのだろうかと思っていました。 –

関連する問題