我有一个存储一些文档的 SQL 数据库。
用户可以登录该应用程序,查看他们文档的列表。
在网格视图中点击下载链接按钮,我从数据库获取文件,将其写入文件系统,然后执行此代码。
System.IO.FileInfo file = new System.IO.FileInfo(System.Configuration.ConfigurationManager.AppSettings["UploadPath"] + DocumentName);
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.Cookies.Clear();
Response.Cache.SetCacheability(HttpCacheability.Private);
Response.CacheControl = "private";
Response.Charset = System.Text.UTF8Encoding.UTF8.WebName;
Response.ContentEncoding = System.Text.UTF8Encoding.UTF8;
Response.AppendHeader("Content-Length", file.Length.ToString());
Response.AppendHeader("Pragma","cache");
Response.AppendHeader("Expires", "60");
Response.ContentType = GetContentType(file.Extension);
Response.AppendHeader("Content-Disposition",
"inline; " +
"filename=\"" + file.Name + "\"; " +
"size=" + file.Length.ToString() + "; " +
"creation-date=" + DateTime.Now.ToString("R") + "; " +
"modification-date=" + DateTime.Now.ToString("R") + "; " +
"read-date=" + DateTime.Now.ToString("R"));
我的GetContentType()方法只返回我允许的文件类型,例如"application/pdf, application/msw0rd"等。
我的问题是,当文件保存时,保存的是网页本身,而不是文件系统中的文件。在谷歌浏览器中,它会在文件名后面加上.htm扩展名,我想这是因为它知道它是一个网页?
无论如何,一个很好的第一步是获得实际的文件,而不是HTML页面上的副本!
谢谢。