我在服务器上制作了csv文件 - 如何让客户端下载此文件?

时间:2011-01-14 09:27:18

标签: c# asp.net

我在服务器上制作了像这样的csv:

string Expath = @"d:\A.csv";
protected void Button3_Click(object sender, EventArgs e)
{
    FileStream FS = null;
    StreamWriter SW = null;
    try
    {
        FS = new FileStream(Expath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
        SW = new StreamWriter(FS, Encoding.Default);
        SW.WriteLine("Test");
        SW.WriteLine("1,2,3,4,5");
    }
    catch { }
    finally
    {
        if (SW != null)
        {
            SW.Close();
            FS.Close();
        }
    }
}

在服务器上的d:上创建此文件是否正确?如果不是在哪里放置下摆更好?

如何在客户端完成后下载此文件? (asp.net C#)

3 个答案:

答案 0 :(得分:6)

您可以使用此代码将文件推送到浏览器。

     private void PushToBrowser(string FilePath, byte[] Data)
    {
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.BufferOutput = true;
        HttpContext.Current.Response.ClearContent();
        HttpContext.Current.Response.ClearHeaders();
        HttpContext.Current.Response.ContentType = @"application/csv";
        HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(FilePath));
        HttpContext.Current.Response.OutputStream.Write(Data, 0, Data.Length);
        HttpContext.Current.Response.Flush();
        HttpContext.Current.Response.Close();

        File.Delete(FilePath);
    }

您可以使用以下代码将文本数据转换为字节数组

byte[] Data = File.ReadAllBytes(FilePath)

我不建议将生成的文件保留在Web目录之外,即使它可以通过impersonation写入ASP.NET中Web根目录之外的目录,但在生产环境中根本不建议这样做。

答案 1 :(得分:0)

可能d:\不是一个好地方。如果您在该服务器上运行了Web服务器,则必须查看要在其中发布文件的站点的虚拟目录所在的位置,然后将该文件放在此处。

答案 2 :(得分:0)

当我在服务器上制作文件时,例如我已保存到

的图像
Server.MapPath(@"~\" + sFilename)