将文件发送到客户端并删除它

我在我的服务器上有一个word文档,我想发送给我的客户端。 其实我希望他们下载该文件。 我在运行时创建该文件,并且我想在从服务器下载它之后将其删除。 我在本地尝试这种情况。 创建文件后,我的服务器将其发送给客户端。 在网络浏览器中,我看到这个:

在这里输入图像描述

我不想要这个。 我希望Web浏览器打开保存文件对话框。 我希望客户端下载真实文件。 这是我的代码:

           Guid temp = Guid.NewGuid();
           string resultFilePath = Server.MapPath("~/formats/sonuc_" + temp.ToString()  + ".doc");
            if (CreateWordDocument(formatPath, resultFilePath , theLst)) {

                Response.TransmitFile(resultFilePath);

                Response.Flush();

                System.IO.File.Delete(resultFilePath);

                Response.End();
            }

这段代码应该做到这一点,但请注意,这会导致将整个文件加载到服务器的内存中。

private static void DownloadFile(string path)
{
    FileInfo file = new FileInfo(path);
    byte[] fileConent = File.ReadAllBytes(path);

    HttpContext.Current.Response.Clear();
    HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", file.Name));
    HttpContext.Current.Response.AddHeader("Content-Length", file.Length.ToString());
    HttpContext.Current.Response.ContentType = "application/octet-stream";
    HttpContext.Current.Response.BinaryWrite(fileConent);
    file.Delete();
    HttpContext.Current.Response.End();
}

你想要的不是一个.aspx文件(这是一个网页),而是一个.ashx ,它可以提供你需要的数据,并设置内容处置。 查看此问题的示例(此处使用PDF下载):

使用ASP.NET .ashx模块下载文件

您也可以尝试为Word设置正确的内容类型/ MIME类型,可能类似于以下内容,或者您​​可以查看此问题。

response.ContentType = "application/msword";
response.AddHeader("Content-Disposition", "attachment;filename="yourFile.doc"");
链接地址: http://www.djcxy.com/p/45453.html

上一篇: Send file to client and delete it

下一篇: Word/Excel files corrupted when downloading from PHP