能否使用javascript生成文件并提示用户下载?

5
能否使用JavaScript生成文件并提示用户下载?
我们想要实现的是:创建一个小型HTML表单,用户可以在其中编辑表格中的值,并能够从表单中生成CSV文件并提示用户将其保存到硬盘上。在纯JavaScript中是否有可能实现?如果不行,是否有任何解决方法?
注意:我知道可以通过与服务器往返解决这个问题,发送表单并获得CSV文件,但问题在于没有服务器,HTML表单只会在硬盘上生成。
3个回答

1
如果您不介意使用Flash,我建议您使用Downloadify。您需要托管downloadify.swf并与您的JavaScript内容生成代码一起提供服务。
它很容易集成。以下是从提供的示例网站中复制粘贴的内容:
<script type="text/javascript">
  Downloadify.create('downloadify',{
    filename: function(){
      return document.getElementById('filename').value;
    },
    data: function(){ 
      return document.getElementById('data').value;
    },
    onComplete: function(){ 
      alert('Your File Has Been Saved!'); 
    },
    onCancel: function(){ 
      alert('You have cancelled the saving of this file.');
    },
    onError: function(){ 
      alert('You must put something in the File Contents or there will be nothing to save!'); 
    },
    transparent: false,
    swf: 'media/downloadify.swf',
    downloadImage: 'images/download.png',
    width: 100,
    height: 30,
    transparent: true,
    append: false
  });
</script>

1

如果没有服务器可供下载,您无法像正常情况下那样下载数据。

您可以将 CSV 数据输出到新的浏览器窗口,用户随后可以保存它。


0

用纯JavaScript不行。

你需要一个服务器端脚本来生成文件并将其暂时保存在内存中,然后向用户呈现一个强制下载对话框。

建议您采用Fungus的方法,使用JavaScript将其编写到浏览器窗口中,然后指示用户如何保存它(复制>粘贴...等)。

谢谢,Sean


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接