簡體   English   中英

另存為文本文件javascript

[英]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現在可以做到這一點。

html

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

Java腳本

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,該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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM