Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用正确的内容配置和文件名将文件从服务器(asp.net)下载到IE8_.net_Asp.net_Download - Fatal编程技术网

使用正确的内容配置和文件名将文件从服务器(asp.net)下载到IE8

使用正确的内容配置和文件名将文件从服务器(asp.net)下载到IE8,.net,asp.net,download,.net,Asp.net,Download,我正在通过aspx页面从服务器/数据库下载文件。内联使用内容处置时,文档将在正确的应用程序中打开,但文件名与网页相同。我希望文档以MS Word格式打开,但文件名正确。这是我正在使用的代码 Response.Buffer = true; Response.ClearContent(); Response.ClearHeaders(); Response.Clear(); Response.ContentType = MimeType(fileName); //function to return

我正在通过aspx页面从服务器/数据库下载文件。内联使用内容处置时,文档将在正确的应用程序中打开,但文件名与网页相同。我希望文档以MS Word格式打开,但文件名正确。这是我正在使用的代码

Response.Buffer = true;
Response.ClearContent();
Response.ClearHeaders();
Response.Clear();
Response.ContentType = MimeType(fileName); //function to return the correct MIME TYPE
Response.AddHeader("Content-Disposition", @"inline;filename=" + fileName);
Response.AddHeader("Content-Length", image.Length.ToString());
Response.BinaryWrite(image);
Response.Flush();
Response.Close();
同样,我希望文件以正确的文档文件名在MS Word中打开,以便用户能够正确地保存/查看


想法?谢谢

这是我使用的ASP.NET代码(使用Delphi.NET,但是你知道了),它对我来说一直很好。请注意,我将
内容处置
标题设置为
附件
,而不是
内联

Response.Clear();
Response.Expires = 0;
Response.ContentType := 'content type here';
Response.AppendHeader('Content-Disposition', 'attachment; filename="' + Path.GetFileName('file name here') + '"');
Response.AppendHeader('Content-Length', file size here);

我的实际代码稍微复杂一些,因为我还支持客户机的
内容编码
响应头,这些客户机通过
接受编码
请求头支持
gzip
deflate
压缩。

确保您的文件名与MIME类型具有适当的扩展名

即,如果您返回word文档,则文件名应以“.doc”结尾

当然,您可以使用其他扩展,但在这种情况下,不同的浏览器将以不同的方式处理附件


另外,请确保文件名中不包含文件名中不允许的字符。

谢谢……是的,在找到更好的解决方案之前,这与我现在所做的类似。似乎切换到内容处置-附件是替代方法,但仍然不是首选方法。为什么不首选使用“内容处置:附件”?这就是大多数服务器用于强制下载提示的方式。据我所知,使用附件时,最终用户总是会得到打开/保存提示,而不是在浏览器中内联打开提示。我注意到,您没有在“inline;”之间包含空格和“文件名”。也许有些浏览器对此很敏感,这无法正确找到“filename”属性?