目前,我使用的是以下代码:
<?php
header('Content-type: application/force-download');
header('Content-Disposition: attachment; filename="'.$_POST['savename'].'.bob"');
echo($_POST['savedata'])
?>它获取表单的数据,创建一个附件,然后将其发送回来。这是没有用的,因为客户端有数据。我想将其重写为:
myForm.onsubmit = SomeSaveToFileFunction()发布于 2011-04-05 21:57:36
出于明显的安全原因,JavaScript不能直接在本地计算机上写入文件。然而,您也许能够使用ActiveX对象来做您需要的事情,但同样,它只能与IE一起工作。例如,你需要像NPAPI这样的等价物才能使它与Chrome兼容。
我想你应该保持你实际做的方式,如果它像你想要的那样工作。
编辑:我指的是NPAPI,而不是"API“。它允许您构建工作方式(某种程度上)与ActiveX相同的插件,并允许您执行相同的操作。
发布于 2014-01-06 19:37:12
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)
发布于 2011-04-05 21:46:44
实际上,流量可能是无用的。你是对的。但正如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;
}您可能需要一些代码来抑制对表单的默认处理……我不知道。
https://stackoverflow.com/questions/5552540
复制相似问题