フロントエンド ファイル エクスポートのために responseType を BLOB に設定するときに問題が発生しました

1. フロントエンドがエクスポート ファイル インターフェイスを呼び出すと、通常、responseType が BLOB としてリクエストに追加されます。

 

数日前に問題が発生しました。バックエンド担当者のインターフェイスは次の 2 つの状況で表示されます。

1. エクスポート インターフェイス リクエストが正常な場合、フロントエンドは次の図に示すようにファイル ストリームを受信します。

 この時点で、インターフェイスから返されたデータ型を出力すると、インターフェイスが BLOB 型のデータを返し、BLOB 内の属性型が application/vnd.ms-excel であることがわかります。これは、ファイル型が application/vnd.ms-excel であることを意味します。エクスポートされたファイルは Excel 形式です。以下に示すように 

BLOB (バイナリ ラージ オブジェクト) ----バイナリ ラージ オブジェクトは、バイナリ ファイルを格納できるコンテナです。

率直に言うと、BLOB はバイナリ オブジェクトです。この BLOB オブジェクトを通じてファイルの内容を直接読み取ることができますが、現時点では、次の図に示すように、対応する BLOB オブジェクトを a タグを使用して直接エクスポートするだけで済みます。 :

 2.エクスポート インターフェイス データが多すぎる場合、以下の図に示すように、バックエンドが例外をスローします。 

このとき、結果をブラウザコンソールに出力します。キャッシュバック結果は依然として blob オブジェクトですが、型は application/json になります。 

インターフェイスから返された結果を取得したいので、BLOB オブジェクトのファイルを読み取る必要があり、使用する必要があります。FileReader

FileReaderこのオブジェクトを使用すると、Web アプリケーションは、 File または Blob オブジェクトを使用して、読み取るファイルまたはデータを指定し、 ユーザーのコンピューターに保存されているファイル (または生データ バッファー) の内容を非同期的に読み取ることができます。 

blob オブジェクトの type 属性で判断でき、type が application/json の場合、インターフェイスは json オブジェクトを返します

このうち、reader.result はインターフェイスによって返される結果であり、オブジェクトに変換する必要がある json 文字列です。 

おすすめ

転載: blog.csdn.net/weixin_46018417/article/details/129026708