当前位置:  开发笔记 > 编程语言 > 正文

C#ASP.NET 3.5内容处理文件下载问题

如何解决《C#ASP.NET3.5内容处理文件下载问题》经验,为你挑选了2个好方法。

我有一个存储一些文件的SQL数据库.

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

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

    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网页的副本!

谢谢.



1> Samiksha..:

代替

Response.AppendHeader("Content-Disposition","inline;"+"filename =

使用

Response.AddHeader("content-disposition:","attachment; filename =



2> CMS..:

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

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

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有