Javascript下载CSV文件

时间:2014-03-10 21:07:17

标签: javascript node.js express download

我正在尝试在我的网站上创建一个按钮,允许用户下载.csv文件。我目前有网站命中服务器,服务器生成一个文本字符串,其格式为csv文件。我不知道从哪里开始。我将此字符串保存到服务器上的文件,然后将文件发送到客户端(我不希望在服务器端创建文件)或者我发送客户端文本字符串然后在客户端上创建文件侧?我希望按钮能够像用户期望的那样运行下载按钮(即,他们可以选择保存文件的位置,进度条显示文件下载的进度)

我正在使用Nodejs并在服务器端表达。

2 个答案:

答案 0 :(得分:0)

生成文件后,只需在页面中添加指向文件位置的链接:

<a href="filename.xxx" target="_blank">Clickable text</a>

浏览器将知道如何处理此问题并提示用户他们要保存文件的位置。一旦用户指定了该文件,该文件将被下载到用户的计算机上。

如果您只想在内存中创建文件然后将其发送给用户,那么如果您使用的是asp.net MVC,则可以执行以下操作:

public FileStreamResult MyFunction(/*your parms*/)
{
    System.IO.MemoryStream stream = FunctionThatCreatesMyCalendarStream();
    //you may need stream.Position = 0 here depending on what state above funciton leaves the stream in.
    //stream.Position = 0;
    FileStreamResult result = new FileStreamResult(stream, "text/csv");
    result.FileDownloadName = "myfiledownloadname.csv";
    return result;
} 

编辑:如果您正在使用node.js,请查看此帖子 - Nodejs send file in response

答案 1 :(得分:0)

这是我目前用来发送csv的回调函数。您可以将按钮调用此函数,然后发送csv。当您调用此服务时,会自动将文件下载到您的compurer。

function(req,res){
    // Process that does the csv and stores it in a variable csv_variable
    res.writeHead(200,{'content-type':'text/csv'});
    res.write(csv_variable);
    res.end();
});

希望这有帮助!