HttpResponseMessage
でラップされたファイルで応答するwebapi
コントローラに対して角度がget
の要求を開始すると、ブラウザはファイルのダウンロードであり、データが失われていると認識しません。角度がファイルのブロックをブロックしています
私はフィドラーをチェックして、バイナリデータがレスポンスに含まれていることがわかりました。
私はこれでGETリクエストを開始しています:
return $http.get(serviceURLRoot + 'api/myreport/' + dateParams.StartDate + '/' + dateParams.EndDate, { withCredentials: true }).success(function (data) {
});
私は直接アドレスバーに要求を入力した場合、私はバックだけで罰金ファイルを取得します。 window.open
を使用することでも動作します:
window.open(serviceURLRoot + 'api/rawdatareport/' + dateParams.StartDate + '/' + dateParams.EndDate);
なぜ$http.get
の仕事をしないのですか?
EDIT -----
はここで、サーバー上に構築されたとしてHttpResponseMessageです:
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new ByteArrayContent(pck.GetAsByteArray());
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") {
FileName = "myReport.xlsx"
};
return result;
あなたは何をレスポンスしていますか? Ajax自体はファイル保存ダイアログを初期化しません。 – charlietfl
@charlietflサーバまたはクライアントを意味するかどうかわかりません。私は、サーバー上でどのようにレスポンスが構築されているかを示すために質問を更新しました。クライアント側では、 'return $ http.get'文が表示されているだけで、何も削除されていません。 – Legion