使用窗口对象下载 CSV 文件

download a CSV file using window object

本文关键字:CSV 文件 下载 对象 窗口      更新时间:2023-09-26

我正在尝试创建一个将下载CSV文件的链接。 我目前的解决方案是侦听该链接上的单击事件,然后附加一个隐藏的表单,并提交该表单。 我想将窗口对象设置为等于创建 CSV 的处理程序的链接。 但是它似乎不起作用,这是我到目前为止所拥有的。 我对使用任何其他库不感兴趣。

以下是用于创建虚拟 CSV 文件的处理程序代码:

else if(action == "exportalldata")
{
    context.Response.Clear();
    context.Response.ContentType = "application/csv";
    context.Response.AddHeader("Content-Disposition", "attachment;     filename=yourData.csv");
    context.Response.Write("'"ID'", '"Description'", '"DTA'"'n");
    context.Response.Write("'"'test1'",'"test2'",'"test3'"'n");   
    context.Response.End();    
}

表单方法,当单击链接时,该事件会触发此事件(有效):

$form = $(document.createElement('form'))
        .attr({
              action: 'svc/export.ashx/exportAllData',
              method: 'POST'
         })
         .css('display', 'none')
         .appendTo('body');
$form.submit();
$form.empty().remove();

我想做以下几点:

<a id = "exportData" href="javascript:window.location='svc/export.ashx/exportAllData'">Export Variable List</a>

当我这样做时,发生的所有事情都是我得到一个空白屏幕,并且没有CSV文件下载。 如果链接也不会将用户引导离开包含链接的页面,那就太好了。 我尝试设置目标="_blank",但这不起作用。

我使用了一个jQuery插件来解决这个确切的问题:

http://johnculviner.com/category/jquery-file-download/

您可以像已经做的那样使用一个简单的链接,并附加一个通过插件触发下载的点击事件。

这里详细介绍了巧妙的机制。