2013-09-10 54 views
0

好的,所以我今天的問題有點含糊,但這是很多人似乎都在問的問題。無論如何,從一個不完全依賴於IE的HTML頁面保存文件?我正在嘗試編寫一個打開的HTML頁面和XML文件,並允許您編輯頁面中的文件並保存它。顯然,作爲一種普遍的做法,這很糟糕,因爲使用腳本編寫文件存在巨大的安全隱患,但必須有某種方法。我使用JavaScript處理數據的大部分操作,但在對XML文件進行更改後,我希望能夠看到這些更改反映在硬盤上保存的副本中。有這樣的東西有什麼選擇?如何從瀏覽器保存或修改文件

+0

不,沒有這樣的方式。使用javascript將文件保存在客戶端計算機上會是一個可怕的安全漏洞,並且感謝上帝,這是不可能的。當你提到IE時,我想你是指一些ActiveX解決方案。 –

+0

您只能讓瀏覽器爲您提供下載,您無法選擇文件的寫入位置。基本概念是在我以前的回答[** here **](http://stackoverflow.com/a/14680193/1615483)中,但是您很可能想要生成一個_ [** ObjectURL **] (https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL)_從_Blob_這是您要保存的數據。 –

+0

用ajax發送給服務器,在客戶端用'window.location ='/grabfile.php?id='+ id;抓取它時存儲它一點''用grabfile.php和'header 'Content-disposition:attachment; filename ='。$ filename);'然後瀏覽器將下載==保存文件。真棒。 – DDS

回答

0

我不認爲你可以這樣做,但是,你可以使用php創建一個文件,用戶指定的任何內容並將其保存在服務器上。此時,您可以將鏈接返回給用戶查看。如果你有一個後端數據庫,它會更好。

就像我說的,這個選項實際上是在服務器上創建文件,而不是改變它們。

有用的鏈接:

http://www.tech-recipes.com/rx/1455/php-create-a-file-on-your-server/

+0

有些CMS執行此操作。 – Jacques

0

我會建議檢查的NodeJS。我爲Chrome寫了一個擴展,它完全一樣。它從我的硬盤打開一個文件,我可以編輯它並稍後保存它。我只是使用nodejs和套接字作爲瀏覽器和文件系統之間的橋樑。這是一個演示過程的視頻:http://www.youtube.com/watch?v=exAWuCZFCSc 而且可能因爲您已經知道JavaScript,您將能夠輕鬆編寫自己的模塊。

0

你可以試試這個:

var dataXml = '<?xml version="1.0" encoding="ISO-8859-1"?><note><from>Myself</from><to>World</to><message>Hello world!</message></note>';  
var url = 'data:text/xml;charset=utf8,' + encodeURIComponent(dataXml); 

window.open(url, '_blank'); 
window.focus(); 

演示:http://jsfiddle.net/YEAkP/3/

0

只要你不關心老機器,很容易使用HTML5的JS API:

現場演示:http://danml.com/iotest.html

<input type=file id=file onchange=pop(this)> 
<button onclick="download(data.value, file.files[0].name, file.files[0].type)">save</button> 
<br /> 

<textarea cols=110 rows=20 id=data ></textarea> 

<script src="http://danml.com/js/download.js" ></script> 
<script> 
function pop(file){ 
    var fr=new FileReader(); 
    fr.onload=function(e){data.value=e.target.result;} 
    fr.readAsText(file.files[0]); 
} 

</script> 
相關問題