相当于回应。在Windows应用程序中

时间:2015-01-13 05:40:38

标签: c# asp.net winforms

我正在尝试将文本数据传输到文本文件并使其可以下载。在使用Response的Web应用程序中很容易。但是当在Windows上传输相同的东西时,我无法获得解决方案,我们可以通过将数据写入文本文件来完成,但是如何使该文件可以下载?

这是我写的网页格式代码

    private void ButtonSaveText_Click(object sender, EventArgs e)
    {
        //Build the Text file data.
        string TextFileData = string.Empty;
        TextFileData = TextFileData + "PAY SLIP FOR THE MONTH --------------" + Environment.NewLine + Environment.NewLine + Environment.NewLine;
        for (int i = 0; i < GridViewPaySlip.Rows.Count; i++)
        {
            for (int j = 0; j < GridViewPaySlip.HeaderRow.Cells.Count; j++)
            {
                TextFileData += GridViewPaySlip.HeaderRow.Cells[j].Text + "\t\t\t" + GridViewPaySlip.Rows[i].Cells[j].Text + Environment.NewLine + Environment.NewLine + Environment.NewLine;
            }
        }

        //Download the Text file.
        Response.Clear();
        Response.Buffer = true;
        string FileName = String.Format("{0}__{1}{2}", "payslip", EmployeeIdTemp, ".txt");
        Response.AddHeader("content-disposition", "attachment;filename=" + FileName);
        Response.Charset = "";
        Response.ContentType = "application/text";
        Response.Output.Write(TextFileData);
        Response.Flush();
        Response.End();
    }

2 个答案:

答案 0 :(得分:1)

我觉得这里对表单应用和网站之间的差异以及网络服务器的角色存在一些误解。

在创建文本文件方面,它非常简单:

using (System.IO.StreamWriter file = new System.IO.StreamWriter("C:\\example.txt"))
{
    file.WriteLine(TextFileData);
}

那就是它。还有其他方法,该示例不处理编码或任何事情,但它保存文件。

对于&#34;使其可下载&#34;,这与应用程序无关。相反,您需要确保将文本文件保存到Web服务器所服务的文件夹中(并且Web服务器支持该文件类型)。

new StreamWriter("D:\\Websites\\Payslips\\payslip_" + EmployeeIdTemp + ".txt"))

或者你可能使用的任何路径。

希望有所帮助!

答案 1 :(得分:1)

如“Octopoid”所述,你有点困惑。

想一想。您不在桌面应用程序中“下载”。在Web应用程序中,必须将文件从服务器下载到客户端。

在桌面应用程序中,没有服务器,也没有客户端,因此“下载”的概念不存在。

您可能正在考虑以下事实:Web应用程序中的下载可能涉及某些对话框,该对话框允许将下载的文件保存在用户选择的位置。这就是SaveFileDialog class允许你做的事情。例如:

if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
    using (var stream = saveFileDialog1.OpenFile())
    {
        // code to write to the stream
    }
}