【发布时间】: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 你是对的,我现在将这个功能添加到问题中