2012-06-06 135 views
15

我有一个有趣的任务,它需要我从服务器(ASP.NET)下载动态生成的文件到客户端。在客户端,它只是JavaScript(jQuery),客户端可以生成很多参数来定制数据的导出方式。什么是从服务器下载文件的最佳方式

从服务器上下载文件的最佳方法是什么?我是否应该使用WCF服务,如here或简单页面this one

我不知道如何下载文件而不重新加载页面(我不知道,$阿贾克斯将在这种情况下工作)。有人能给我一些关于这个话题的指导吗?谢谢。

+2

我认为这是相关的这个问题/答案:http://stackoverflow.com/questions/3749231/download-file-using-javascript-jquery –

回答

19

首先,你可以从一个处理.ashx

让说,你有在download.ashx下载文件,你有一些参数应用到从您的JavaScript通过,例如download.ashx?p1=8827&p2=8831创建该文件就知道你要创建什么。

然后在您的JavaScript您简单的可以重定向的

window.location = "download.ashx?p1=8827&p2=8831"; 

或替代你可以使用window.open用于做同样认为

window.open("download.ashx?p1=8827&p2=8831"); 

,你的文件就会开始下载。

只要确保你已经设置附件的头,和正确的contentType你的手柄如:

HttpContext.Current.Response.ContentType = "application/octet-stream"; 
    HttpContext.Current.Response.AddHeader("Content-Disposition", 
        "attachment; filename=" + SaveAsThisFileName); 

简单明了,既测试工作。

您也可能对此回答有意思:How to handle errors

+0

你如何做错误处理?例如,你将如何处理在.ashx文件中抛出的异常? – Steve

+1

@Steve如果你有一个错误,你抛出找不到页面,记录错误并修复它。 – Aristos

+0

这有效,但如果URL长度太长会怎样? –

相关问题