我的服务器中有一个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();
}
答案 0 :(得分:7)
这个片段应该可以解决问题,但请注意,这会导致将整个文件加载到(服务器的)内存中。
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();
}
答案 1 :(得分:1)
您想要的不是.aspx
文件(这是一个网页),而是.ashx
,它可以提供您需要的数据,并设置内容处置。请参阅此问题以获取示例(此处使用PDF下载):
Downloading files using ASP.NET .ashx modules
您可能还尝试为Word设置正确的内容类型/ mime类型,可能如下所示,或者您可以take a look at this question。
response.ContentType = "application/msword";
response.AddHeader("Content-Disposition", "attachment;filename=\"yourFile.doc\"");