C# 下载后如何打开Word/Excel文件

C# 下载后如何打开Word/Excel文件,c#,excel,ms-word,C#,Excel,Ms Word,我正在使用下面的代码下载word/excel文件。 下载后如何自动打开此文件 private void DownloadFile(byte[] bArray, string mimeType, string KeyPath, bool bForcedownload) { Response.ContentType = mimeType; if (bForcedownload) Response.Appe

我正在使用下面的代码下载word/excel文件。 下载后如何自动打开此文件

private void DownloadFile(byte[] bArray, string mimeType, string KeyPath, bool bForcedownload)
        {
            Response.ContentType = mimeType;
            if (bForcedownload)
                Response.AppendHeader("Content-disposition",
                    "attachment; filename=" + Path.GetFileName(KeyPath));
            Response.AppendHeader("content-length", bArray.Length.ToString());
            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            Response.AppendHeader(@"Pragma", @"no-cache");
            Response.BinaryWrite(bArray);
            FlushSupressReponse();
        }

private void FlushSupressReponse()
        {
            HttpContext.Current.Response.Flush(); 
            HttpContext.Current.Response.SuppressContent = true;  
            HttpContext.Current.ApplicationInstance.CompleteRequest(); 
        }
您的评论:

我们有一个在浏览器上运行的用户界面,用户点击文件名,文件被下载…但用户需要点击文件打开它,但我想在下载后自动打开它

你不能。这完全是用户的选择。您不能强制网站用户在下载后自动打开文件

这是有意的,因为这样很容易传播病毒

但是,您可以向用户说明如何配置浏览器以自动打开某些类型的文件。例如,在Chrome中,下载文件后,文件名旁边有一个箭头。单击该按钮,可以选择“自动打开此类型的文件”

但这仍然取决于您的用户。您的评论:

我们有一个在浏览器上运行的用户界面,用户点击文件名,文件被下载…但用户需要点击文件打开它,但我想在下载后自动打开它

你不能。这完全是用户的选择。您不能强制网站用户在下载后自动打开文件

这是有意的,因为这样很容易传播病毒

但是,您可以向用户说明如何配置浏览器以自动打开某些类型的文件。例如,在Chrome中,下载文件后,文件名旁边有一个箭头。单击该按钮,可以选择“自动打开此类型的文件”


但这仍然取决于你的用户。

看起来你是在上传文件(向客户端发送文件),而不是下载。你是认真的吗?这些行是用来上传文件的吗?AppendHeader(“内容处置”、“附件;文件名=“+Path.GetFileName(KeyPath));AppendHeader(“content-length”,baray.length.ToString());Response.Cache.SetCacheability(HttpCacheability.NoCache);AppendHeader(@“Pragma”,@“无缓存”);响应。二进制写入(bArray);是的,我是认真的。这是响应浏览器请求的ASP.NET代码。这段代码是你自己写的,还是你在某处找到的?这是用来下载文件的生产代码…我们有在浏览器上运行的用户界面,用户点击文件名,文件就会被下载…但用户需要点击文件来打开它,但我想在下载后自动打开它。嗯。。。对
Response
用于编写响应(reply),这意味着您正在发送,而不是接收,这意味着您正在上载,而不是下载。看起来您正在上载文件(将文件发送到客户端),而不是下载。您是认真的吗?这些行是用来上传文件的吗?AppendHeader(“内容处置”、“附件;文件名=“+Path.GetFileName(KeyPath));AppendHeader(“content-length”,baray.length.ToString());Response.Cache.SetCacheability(HttpCacheability.NoCache);AppendHeader(@“Pragma”,@“无缓存”);响应。二进制写入(bArray);是的,我是认真的。这是响应浏览器请求的ASP.NET代码。这段代码是你自己写的,还是你在某处找到的?这是用来下载文件的生产代码…我们有在浏览器上运行的用户界面,用户点击文件名,文件就会被下载…但用户需要点击文件来打开它,但我想在下载后自动打开它。嗯。。。对
Response
用于编写响应(reply),这意味着您正在发送,而不是接收,这意味着您正在上载,而不是下载。pdf文件不是这样,因为我们可以使用上述代码在浏览器中下载和打开文件。但我知道excel/word文档无法在浏览器中打开。我得到的是字节数组,我使用的是Response.binarywrite(),使用上述pdf文件代码,我点击文件,它会在浏览器中打开pdf文件会在浏览器中打开,而不是在外部程序中打开(尽管用户可以将浏览器配置为在Adobe Reader中打开它们)。这是PDF独有的。例如,请参阅。它为您指出了Chrome中的一个选项,名为“下载PDF文件,而不是在Chrome中自动打开它们”。这表明它对PDF文件的处理方式与其他文件不同。过去有一种称为ActiveX组件的技术,可以将Excel加载到IE浏览器中。但对于PDF文件,情况并非如此,因为我们可以使用上述代码在浏览器中下载并打开文件。但我知道Excel/word文档无法在浏览器中打开。我得到的是字节数组,我使用的是Response.binarywrite(),使用上述pdf文件代码,我点击文件,它会在浏览器中打开pdf文件会在浏览器中打开,而不是在外部程序中打开(尽管用户可以将浏览器配置为在Adobe Reader中打开它们)。这是PDF独有的。例如,请参阅。它为您指出了Chrome中的一个选项,名为“下载PDF文件,而不是在Chrome中自动打开它们”。这表明它对PDF文件的处理与其他文件不同。过去有一种称为ActiveX组件的技术,可以将Excel加载到IE浏览器中。