2011-03-29 32 views

回答

7

隨着AJAX它可能讀取上傳的文件,但與純JavaScript它不可能,因爲JavaScript在客戶端而不是在服務器端工作。

如果你打算使用jquery比Ajax調用可能是這樣

$.ajax({ 
    url: "test.html", 
    context: document.body, 
    success: function(){ 
    $(this).addClass("done"); 
    } 
}); 
+0

我正在使用原型ajax。在發送/發佈到服務器之前是否有可能獲取所選(input type =「file」)文件的內容? – Sangam254 2011-03-29 09:00:51

+0

我應該使用javascript解密函數解密文件中的內容。所以我需要所選文件中的內容。 – Sangam254 2011-03-29 09:02:25

+0

我試着用postBody:document.body。它不工作.. – Sangam254 2011-03-29 10:50:35

0

你不能直接使用javascript做它。您可以將文件發佈到服務器,然後使用ajax檢索內容。

0

JavaScript是設計不能夠訪問它正在運行的計算機。這是流氓javascript無法讀取用戶的硬盤。 雖然你可以考慮使用iframe。

0

這並不是完全不可能

瀏覽器通常是在一個沙箱環​​境中運行的JavaScript(JavaScript引擎)。

所以,你可以使用Windows腳本宿主或Internet Explorer在受信任的環境中,並使用FileSystemObject

或使用

或上傳文件到您的服務器,並使用的XMLHttpRequest對象。(在其他詞 - 阿賈克斯)

9

你們都錯了的方式。有可能的。使用新的File API,您可以在將文件提交給服務器之前讀取這些文件。儘管如此,它並不適用於所有瀏覽器。

選中此示例。例如嘗試打開一個文本文件。

http://development.zeta-two.com/stable/file-api/file.html

編輯:這些問題即使國家「上傳文件」我把它解釋爲,「一個要上傳的文件」。否則,它根本就沒有意義。

+0

+1 - 如果服務器端發揮作用,那麼它是一個簡單的解決方案,但File API確實解決了問題,但可用性仍然是一個問題。 – Anurag 2011-03-29 07:54:50

+1

+1 - 在這裏尋找另一個教程:http://www.html5rocks.com/en/tutorials/file/dndfiles/ – 2011-12-02 13:46:55

0

對於IE使用FileSystemObject(可在所有Windows系統上找到)。

對於Firefox:

var file = Components.classes["@mozilla.org/file/local;1"]. 
     createInstance(Components.interfaces.nsILocalFile); 
file.initWithPath("/home"); 

https://developer.mozilla.org/en/Code_snippets/File_I%2F%2FO

要了解這些方法和其他人在使用,看看TiddlyWiki應用程序,看看它是怎麼做的所有主流瀏覽器。