0

次の方法を使用してファイルをダウンロードしています.iframe内のボタンをクリックすると.IE除くすべてのブラウザで正常に動作します.誰かが私に解決策を提案できますか

private void DownloadToBrowser(string filePath)
    {
        try
        {
            FileInfo file = new FileInfo(filePath);
            Context.Response.Clear();

            Context.Response.ClearHeaders();

            Context.Response.ClearContent();

            Context.Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);

            Context.Response.AddHeader("Content-Length", file.Length.ToString());

            Context.Response.ContentType = "text/plain";

            Context.Response.Flush();

            Context.Response.TransmitFile(file.FullName);

            Context.Response.End();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
4

4 に答える 4

1

行を削除することをお勧めしContext.Response.Flush();ます...必要ではないと思います(Context.Response.End();行の一部として発生するため)、ブラウザが次の行でファイルを受け取る方法を台無しにする可能性があります。

また、送信しているファイルは間違いなく平文ファイルですか?そうでない場合は、別のContext.Response.ContentType();

于 2012-06-14T09:54:12.367 に答える
0

次のようなものを試すことができます:

Context.Response.Buffer = true;
Context.Response.ContentType = "application/pdf";
Context.Response.AddHeader("Content-Disposition", "attachment;filename=" + FileName );
Context.Response.OutputStream.Write(dataBytes ,0,FileContentLength);         

また、これを aspx ページに追加してみてください:

<%@ Page aspCompat="True" other attributes %>
于 2012-06-14T05:28:47.407 に答える
0

データセットを使用していることを理解するために、Excel ファイルとしてダウンロードするために

名前空間を使用:

        using System.IO;
        using System.Data;   

        DataSet ds = new DataSet("Table");
        ds.Tables.Add("Table1");
        ds.Tables[0].Columns.Add("Field1");
        ds.Tables[0].Columns.Add("Field2");
        ds.Tables[0].Columns.Add("Field3");
        ds.Tables[0].Rows.Add();
        ds.Tables[0].Rows[0][0] = "1";
        ds.Tables[0].Rows[0][1] = "2";
        ds.Tables[0].Rows[0][2] = "3";


        HttpResponse response = HttpContext.Current.Response;

        // first let's clean up the response.object
        response.Clear();
        response.Charset = "";

        // set the response mime type for excel
        response.ContentType = "application/vnd.ms-excel";
        response.AddHeader("Content-Disposition", "attachment;filename=sample.xls");

        // create a string writer
        using (StringWriter sw = new StringWriter())
        {
            using (HtmlTextWriter htw = new HtmlTextWriter(sw))
            {
                // instantiate a datagrid
                DataGrid dg = new DataGrid();
                dg.DataSource = ds.Tables[0];
                dg.DataBind();
                dg.RenderControl(htw);
                response.Write(sw.ToString());
                response.End();
            }
        }

Wordファイルとしてダウンロードする場合

交換

        response.ContentType = "application/msword";
        response.AddHeader("Content-Disposition", "attachment;filename=sample.doc");
于 2012-06-14T09:46:11.247 に答える
0

ほとんどの場合、IE で必要な HTTP 応答ヘッダーが欠落している可能性があります。

Microsoft Web に KBがあります。

SOに関する同様の質問もご覧ください:PHP script to download file not working in IE

于 2012-06-14T05:23:10.123 に答える