【问题标题】:File download in ASP.Net using C#使用 C# 在 ASP.Net 中下载文件
【发布时间】:2011-11-22 22:36:21
【问题描述】:

我正在尝试让我的客户从我的网站下载文件。我试过这段代码:

string fName = Server.MapPath((new_exwork.FilePath));
FileInfo fi = new FileInfo(fName);
long sz = fi.Length;
Response.ClearContent();
Response.ContentType = MimeType(Path.GetExtension(fName));
Response.AddHeader("Content-Disposition", string.Format("attachment; filename = {0}", System.IO.Path.GetFileName(fName)));
Response.AddHeader("Content-Length", sz.ToString("F0"));
Response.TransmitFile(fName);
Response.End();

但我得到以下异常:

无法评估表达式,因为代码已优化或本机框架位于调用堆栈顶部。

MimeType 函数

private static string MimeType(string Extension)
    {
        string mime = "application/octetstream";
        if (string.IsNullOrEmpty(Extension))
            return mime;

        string ext = Extension.ToLower();
        Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(ext);
        if (rk != null && rk.GetValue("Content Type") != null)
            mime = rk.GetValue("Content Type").ToString();
        return mime;
    } 

【问题讨论】:

  • 这可能是您的解决方案:support.microsoft.com/kb/312629/EN-US
  • ContentType 不应是文件扩展名,但例如对于 Word 文件:application/msword 或对于一般二进制文件:Application/OCTET-STREAM
  • @Magnus 取决于 MimeType(string) 所做的事情,他可能已经考虑到了这一点。
  • @NathanTaylor 你说得对,没看到那个。
  • @Nathan Taylor 你是对的,我现在将这个功能添加到问题中

标签: c# asp.net file download


【解决方案1】:

好的一些建议。

一种方法是只使用文件的超链接,然后客户端单击文件,浏览器会询问他们是否要下载。

您可以让它们右键单击并保存目标以进行下载。

如果您希望跟踪下载状态

这是一个您可以查看的链接。 FileDownload Tracking Status

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    • 2016-09-14
    • 2010-12-10
    • 1970-01-01
    相关资源
    最近更新 更多