【问题标题】:Save as text file javascript另存为文本文件 javascript
【发布时间】:2011-04-05 13:21:58
【问题描述】:

目前,我正在使用此代码:

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

它获取表单的数据,创建一个附件并立即将其发送回去。这是没用的,因为客户端有数据。我想把它改写成:

myForm.onsubmit = SomeSaveToFileFunction()

【问题讨论】:

  • 抛开现代 HTML5 API(几乎可以肯定它不会做你真正想要的),你不能告诉浏览器将文件保存到本地(客户端)机器。
  • 我认为您应该在此处添加对您要实现的目标的解释。简单地发布代码并说“在 javacript 中执行此操作”并不是很有帮助。
  • 我正在尝试在文本文件中获取一些文本...标题不清楚吗?

标签: javascript file text save client-side


【解决方案1】:

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/

EDIT最新版chrome不接受下载属性。(chrome35)

【讨论】:

    【解决方案2】:

    确实,流量可能毫无用处。你是对的。但就像 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;
    }
    

    您可能需要一些代码来禁止您对表单的默认处理...我不知道。

    【讨论】:

    • 谢谢,但是 GET 的数据太多了。如果要使用 Heiko 的代码,可以通过“return false;”来抑制默认处理。在函数的最后。如果您将表单提交到带有“
      ”的空白页面,则无需重新加载页面。
    【解决方案3】:

    出于明显的安全原因,JavaScript 不能直接在本地计算机上写入文件。但是,您也许可以使用 ActiveX 对象来做您需要的事情,但同样,它只适用于 IE。然后,您将需要类似 NPAPI 的等价物来使其与 Chrome 兼容。

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

    编辑:我的意思是 NPAPI 而不是“API”。它可以让您构建以与 ActiveX 相同的方式工作的插件,并让您做同样的事情。

    【讨论】:

      猜你喜欢
      • 2016-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      相关资源
      最近更新 更多