2009-02-24 93 views
56

有沒有辦法讓jQuery從文件中獲取信息?可能嗎?怎麼樣?使用jQuery讀取/寫入文件

+2

你能不寫答案的HTML中的一個字段? – 2009-02-24 18:16:08

+0

這不是真的了。但是您可以通過javascript獲得的訪問權限僅限於用戶允許的內容。 – Kiwy 2013-12-16 09:02:32

+1

出於安全原因,沙箱可防止直接文件訪問。您可以使用HTML5 File API來允許用戶從文件對話框中選擇文件。 – 2016-01-21 15:02:11

回答

68

不,JavaScript沒有寫入文件的權限,因爲這至少可以說是一個巨大的安全風險。不過,如果你想獲得/存儲服務器端的信息,你當然可以對PHP/ASP/Python /等進行Ajax調用。腳本,然後可以在服務器中獲取/存儲數據。如果你的意思是在客戶端機器上存儲數據,那麼單單使用JavaScript是不可能的。我懷疑Flash/Java可能能夠,但我不確定。

如果您只是試圖針對特定用戶存儲關於不可靠時間段的少量信息,我認爲您需要Web Storage API或Cookie。不過,我不確定你的問題是你想完成什麼。

+8

Cookie當然會起作用,但對於大多數支持HTML5本地存儲的現代瀏覽器,我會走這條路。這是一個很好的指南,它是如何工作的:http://diveintohtml5.org/storage.html – 2010-11-10 16:43:33

5

餅乾是你最好的選擇。尋找jQuery cookie插件。

Cookie是爲這種情況而設計的 - 您希望在客戶端保留有關此客戶端的一些信息。請注意,cookie會在每個Web請求中來回傳遞,因此您無法在其中存儲大量數據。但只是一個簡單的問題答案應該沒問題。

8

您將需要通過Web編程語言(如PHP或ASP.net)處理您的文件訪問。

要這樣設置,您可以:

  • 創建處理文件讀寫的腳本。這應該對瀏覽器可見。

  • 向寫入數據或讀取數據的腳本發送jQuery ajax請求。您需要通過請求參數傳遞所有讀/寫信息。您可以在jQuery ajax文檔中瞭解更多。

確保您清理存儲的任何數據,因爲這可能會帶來安全風險。但是,這實際上只是標準的平面文件數據存儲,並不一定非同尋常。

Paolo指出,沒有辦法通過jQuery或任何其他類型的javascript直接讀/寫文件。

14

HTML5和Google Gears都增加了本地存儲功能,主要是通過嵌入式SQLite API。

2

如果你想在頁面內沒有一堆服務器端處理的情況下做到這一點,將文本值吹到隱藏字段(使用PHP)可能是一個可行的想法。然後你可以使用jQuery來處理隱藏的字段值。

無論漂浮你的船:)

10

這個Javascript功能提出了一個「另存爲」對話框,誰運行通過他們的瀏覽器這個功能用戶

的技術進行說明。用戶按下確定,文件保存在服務器端。

這用於與所有瀏覽器一起使用,但現在只適用於IE。以下代碼存在安全風險,如果JavaScript可以在服務器端保存數據,跨站點腳本黑客可以擁有您的服務器。 Firefox和Chrome已經堵住了漏洞,但IE尚未完成。

// content is the data (a string) you'll write to file. 
// filename is a string filename to write to on server side. 
// This function uses iFrame as a buffer, it fills it up with your content 
// and prompts the user to save it out. 
function save_content_to_file(content, filename){ 
    var dlg = false; 
    with(document){ 
    ir=createElement('iframe'); 
    ir.id='ifr'; 
    ir.location='about.blank'; 
    ir.style.display='none'; 
    body.appendChild(ir); 
     with(getElementById('ifr').contentWindow.document){ 
      open("text/plain", "replace"); 
      charset = "utf-8"; 
      write(content); 
      close(); 
      document.charset = "utf-8"; 
      dlg = execCommand('SaveAs', false, filename); 
     } 
     body.removeChild(ir); 
    } 
    return dlg; 
} 

調用這樣的功能:

msg = "I am the president of tautology club."; 
save_content_to_file(msg, "C:\\test");