首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# ASP.NET 3.5内容部署文件下载问题

C# ASP.NET 3.5内容部署文件下载问题
EN

Stack Overflow用户
提问于 2008-12-03 06:20:08
回答 3查看 17.6K关注 0票数 6

我有一个存储一些文档的sql数据库。

用户可以登录到该应用程序,并查看其文档列表。

当在他们的文档的网格视图中单击链接按钮下载时,我从数据库中获取文件,将其写入文件系统,然后执行此代码。

代码语言:javascript
复制
    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等。

我的问题是,当文件被保存时,它是网页本身,而不是文件系统中的文件。而在google chrome中,它在文件名的末尾添加了一个.htm扩展名,我猜是因为它知道这是一个网页?

无论如何,第一步就是获得实际的文件,而不是他们所在的HTML格式的网页的副本!

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-12-03 07:14:26

您如何发送文件的实际内容??

我通常使用Response.TransmitFile方法,它基本上是打开文件并将其内容发送到Response.OutputStream

票数 9
EN

Stack Overflow用户

发布于 2008-12-03 06:51:29

而不是

Response.AppendHeader(“内容配置”,“内联;”+ "filename=

使用

Response.AddHeader(“内容部署:”,"attachment;filename=

票数 9
EN

Stack Overflow用户

发布于 2008-12-03 06:29:49

您是否尝试过将content-disposition设置为"attachment“而不是"inline"?我相信浏览器随后会提示用户打开或保存文档。

此外,您通常可以通过使用BinaryWrite方法将字节流从数据库直接写入响应对象来绕过文件系统……这也是一种情况,您可能想要研究在ASPX页面上使用HTTP Handler,这样您就不需要担心清除响应等问题。过去,我在页面上使用隐藏的iframe,然后使用Javascript将其src设置为HTTP Handler,该HTTP Handler将文档ID作为QueryString上的参数。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/336345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档