5

リクエストに応じていくつかのファイルをダウンロードする必要があるWebAPIコントローラーがありますが、プレーンテキストファイルになると、ブラウザーのダウンロード要求が表示されません。JSONのようなプレーンテキストの応答のみを提供します(私の場合、それはJSONP WebAPIです)。

スタック (および他のサイト) から他の Q&A を確認しましたが、まだ何も得られません:

ここに私の現在のコードがあります:

var httpResponse = new HttpResponseMessage(HttpStatusCode.OK);
httpResponse.Content = new StreamContent(new MemoryStream(Encoding.UTF8.GetBytes(content)));
httpResponse.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
httpResponse.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
httpResponse.Content.Headers.ContentDisposition.FileName = "speedcam.txt";
return httpResponse;

これが Chrome の応答です。

キャッシュ制御:キャッシュなし

Content-Disposition:添付ファイル; ファイル名=speedcam.txt

コンテンツの長さ:17462

Content-Type:アプリケーション/オクテット ストリーム

日付:2012 年 8 月 27 日 (月) 04:53:23 GMT

有効期限:-1

pragma:no-cache

サーバー:Microsoft-IIS/8.0

X-AspNet-バージョン:4.0.30319

X-Powered-By:ASP.NET

X-SourceFiles:=?UTF-8?B?TTpcVHJhYmFsaG9cTWFwYVJhZGFyXE1hcGFSYWRhci5XZWJBUEk0XEV4cG9ydGE=?

問題ないようですが、ファイル テキスト全体が Chrome Dev Tools の [Response] タブにあります。

4

3 に答える 3

4

多くの調査とテキストの後、 AJAX リクエストがファイルをダウンロードできないという難しい方法を見つけました。次の 2 つの回答に感謝します。

JSON データを含む POST 経由でファイルをダウンロードする JavaScript/jQuery

Jquery、PHP を使用した Ajax ファイルのダウンロード

于 2012-08-30T06:10:21.050 に答える
0

あなたのコードは、テキストの内容に関係なく、ファイルをアプリケーションとして動作させています。

httpResponse.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
于 2012-08-27T05:15:38.477 に答える