1

ファイルを作成してブラウザに渡す Web メソッドがあります。

Chrome では、テキスト ファイルがダウンロードされるだけです。

IE9 では、ブラウザーはファイルを開くか保存するかを尋ねてきます。

私がやりたいことは、ブラウザがファイルを自動的に開くことです(そのファイルタイプのデフォルトプログラムで)

コード:

        [WebMethod]
        [ScriptMethod(UseHttpGet = true)]
        public void Test(string docNum, string docVersion)
        {
            var response = Context.Response;
            response.ContentType = "application/octet-stream";
            response.AppendHeader("Content-Disposition", "attachment; filename=" + docNum + ".txt");
            Byte[] stream = System.Text.Encoding.ASCII.GetBytes("docNum + "," + docVersion);
            response.OutputStream.Write(stream, 0, stream.Length);
            response.Flush();
        }

私はそれを呼び出す:

http://localhost:12345/Services/Foo.asmx/Test?docNum=123456789&docVersion=1

ブラウザでファイルを開くだけにするにはどうすればよいですか?

4

3 に答える 3

2

おそらく、ブラウザが開くように構成されているファイルの種類に関連しています。

ブラウザーが特定の種類のファイルを開く方法を認識していない場合は、ダウンロードするように求められます。

もう1つのことは、TXTファイルにoctect-streamを指定したことです

Content-Type: application/octet-stream
Content-Disposition: attachment;filename=\"My Text File.txt\"

ここで述べたように、実際にブラウザにコンテンツのダウンロードを強制します

テキスト応答のダウンロードを強制するコンテンツの種類は?

于 2013-08-29T15:03:27.220 に答える
1

ブラウザで jpg、pdf、または xls を開く場合は、「ContentType」ヘッダーで正しい MIME タイプを指定する必要があります。たとえば、現在、すべてを「octet-stream」として出力していますが、これは非常に汎用的です。ブラウザーは、どのプログラムがそのようなジェネリック型を開くかを推測できません。ただし、xls の場合は、「application/vnd.ms-excel」の ContentType を使用できます。

これは、可能なMIMEタイプを検索するためのリソースの広範なリストを指すSOの回答です: https://stackoverflow.com/a/7192429/283895

于 2013-08-29T15:14:52.830 に答える