可以将包含用户输入的文件下载到用户的Javascript函数

时间:2014-11-26 18:44:56

标签: javascript ajax download

我如何使用javascript从屏幕上输入的数据创建文件,并将其作为下载文件返回给用户,而不将其保存在服务器端。 示例:用户正在使用应用程序并执行操作。屏幕上有一个“下载”按钮。他们单击该按钮,这会导致文件在包含其工作的浏览器中开始下载。 此外,我希望能够命名该文件。

2 个答案:

答案 0 :(得分:0)

你做不到。浏览器中的下载只能来自服务器,不能通过浏览器中的Javascript完全生成。

您可以在浏览器中创建数据,将其发送到您的服务器,然后允许浏览器从那里下载。是的,我知道这听起来很尴尬,但Javascript不允许直接下载。它可以发出服务器请求,然后如果服务器内容类型指定了正确类型的内容,则浏览器将提示用户下载或自动下载(取决于浏览器设置)。

有关详细信息,请参阅其他答案:

How to Use Content-disposition for force a file to download to the hard drive?

How to implement Content-Disposition: attachment?

答案 1 :(得分:0)

实际上,你现在可以这样做。基本上你要做的是将数据推送到锚标记的href属性,然后激活它。我的下面的例子用于下载文件,除了文件名部分没有像我预期的那样工作。本质上该代码所做的是获取您拥有的一些数据,将其推送到锚标记(最好使用您不需要的隐藏标记),然后调用它开始下载。代码示例:



var downloadFile = function(data) {	
  var a;
  a = document.getElementById("myHiddenAnchorTag");
  a.download = "the filename i want the user to see.extension";
  a.href = "data:text/csv;base64," + window.btoa(JSON.stringify(data));
  window.open($("#myHiddenAnchorTag").attr("href"), "the filename i want the user to see.extension");
};