我试图在我的网站上创建一个按钮,允许用户下载。csv文件。我目前有网站击中服务器和服务器生成的文本字符串,这是在一个csv文件的格式。我不知道该从哪里着手。我是否将此字符串保存到服务器上的文件,然后将文件发送到客户端(我宁愿不在服务器端创建文件),或者我是否向客户端发送文本字符串,然后在客户端创建文件?我想按钮的功能作为一个用户会期望下载按钮工作(即,他们给出了一个选择,在哪里保存文件和进度条显示文件下载的进度)
我使用Nodejs和express在服务器端。
一旦文件生成,只需在页面中添加到文件位置的链接:
<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发送文件在响应
这是我目前用来发送csv的回调函数。您可以放置按钮,以便它调用这个函数,并发送csv。当您调用此服务时,将自动下载文件到您的计算机。
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();
});
希望这对你有帮助!