[英]Save as text file javascript
目前,我正在使用以下代碼:
<?php
header('Content-type: application/force-download');
header('Content-Disposition: attachment; filename="'.$_POST['savename'].'.bob"');
echo($_POST['savedata'])
?>
它獲取表單的數據,創建附件並將其發送回去。 這是沒有用的,因為客戶端具有數據。 我想將其重寫為:
myForm.onsubmit = SomeSaveToFileFunction()
Chrome現在可以做到這一點。
<textarea></textarea><button>save</button>
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();
}
的確,流量可能毫無用處。 你是對的。 但是就像Pointy所說的那樣,不幸的是沒有辦法僅使用javascript。
如果您想以一種更優雅的方式(而不是重新加載頁面)來實現下載,請使用“隱藏的” iframe,該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相同(可以)工作的插件,並可以進行相同的操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.