保存为文本文件javascript



目前,我正在使用这个代码:

<?php
header('Content-type: application/force-download');
header('Content-Disposition: attachment; filename="'.$_POST['savename'].'.bob"');
echo($_POST['savedata'])
?>

它获取表单的数据,创建附件并将其发送回来。这是无用的,因为客户端拥有数据。我想把它重写为:

myForm.onsubmit = SomeSaveToFileFunction()

Chrome现在可以这样做了

html

<textarea></textarea><button>save</button>
Javascript

document.getElementsByTagName('button')[0].onclick = function(){
  var a = document.createElement('a');
  a.href = 'data:text/plain;base64,'+
    btoa(document.getElementsByTagName('textarea')[0].value);
  a.textContent = 'download';
  a.download = 'text.txt';
  a.click();
}

演示http://jsfiddle.net/88BYB/3/

编辑最新版本的chrome不接受下载属性(chrome35)

流量可能毫无用处。你是对的。但就像Pointy说的,不幸的是,仅仅使用javascript是没有办法的。

如果你只是想让你的下载以一种更优雅的方式实现(比页面重新加载),使用一个"隐藏的"iframe,它加载php响应。也许你可以很容易地切换PHP处理从POST到GET和…

myForm.onsubmit = function(formValueSavename, formValueSavedata) { 
// phpIframeRef addresses you hidden iframe
phpIframeRef.loaction.href = 'sendData.php?savename=' + formValueSavename + '&savedata=' + formValueSavedata;
}

你可能需要一些代码来抑制你对表单的默认处理…

JavaScript不能直接在本地计算机上编写文件,这显然是出于安全原因。然而,你可能能够做你需要使用ActiveX对象,但再一次,它将只与IE工作。然后你需要像NPAPI这样的对等物来使其与Chrome兼容。

我想你应该保持你实际做的方式,如果它像你想要的那样工作。

编辑:我指的是NPAPI而不是"API"。它允许您构建与ActiveX工作方式(有点)相同的插件,并允许您做相同的事情。

相关内容

  • 没有找到相关文章

最新更新