2014-02-23 27 views
0

我需要做的是:如何從一個文本文件僅發送文字

  • 讓用戶從他的盤

  • 選擇txt文件獲取文本從它讓我們說一個變量

  • 經由AJAX

發送它(變量值)對於第一點想知道我是否應該使用正常輸入類型(如果我想通過POST發送文件)<input type="file">

對於第二點,我需要知道如何獲取所選文件用戶的名稱,然後從中讀取文本它。另外,我對JavaScript不太熟悉,所以我不知道一個字符串可以存在多長時間(文件平均有大約15k行)

對於第三個我不需要知道我是否可以獲得數據存儲在一個變量或數組中。

在此先感謝。

P.S.我猜javascript不是一種快速的語言,但是(取決於編輯器),它有時會以我在第一或第五行中所有需要的數據的方式在我的計算機上打開。是否可以只讀取文件的前幾行?

+1

HTML5 Rocks有一個關於從磁盤讀取文件的教程(http://www.html5rocks.com/en/tutorials/file/dndfiles/)。 – Whymarrh

+1

回覆:ps:當然,只需將File.slice(0,1024)「調用傳遞給FileReader()而不是」文件「即可獲取文件的第一個KB,而無需將整個內容讀入RAM。 – dandavis

+0

另外,file.name,從你給FileReader()的同一個文件有文件的名稱... – dandavis

回答

0

用@dandavis和其他評論員提到的(和鏈接)可以得到你想要的文件API,但是有一些事情要考慮這個解決方案,即browser support。底線是File API目前是w3c的working draft。並且底線甚至推薦使用w3c 並非所有瀏覽器都完全支持。

什麼解決方案對你來說最「最好」歸結爲你想支持哪種瀏覽器/版本。如果這是我自己的個人項目或「現代」網站/觀衆,我會使用File API。但是,如果這是需要最大瀏覽器支持的東西(對於較舊的瀏覽器),我目前不推薦使用File API。

所以,說了這麼多,這裏是一個建議的解決方案,它使用文件API沒有涉及。

  • 以表單形式提供輸入類型文件以供用戶指定文件。用戶將不得不選擇文件(JavaScript不能做到這一點)
  • 使用form.submit()或設置target屬性提交表單。有一個iframe trick提交表單而不刷新頁面。
  • 使用服務器端語言選擇響應文件信息(名稱,內容等)。例如,在PHP中你會訪問與$_FILES
  • 張貼的文件,那麼你可以使用JavaScript來解析響應。通常你會發送它作爲json編碼的響應。然後你可以用JavaScript中的文件信息做任何你想做的事情。
+0

我會爭辯說,你的第一點不是100%正確的。 (http://www.html5rocks.com/en/tutorials/file/dndfiles/) – Whymarrh

+0

我將不得不訪問JavaScript中的文件通過$ .post發送它,不是嗎? – Fiodor

+0

有趣的是,你說你必須使用ajax,但是JS無法將文件內容作爲字符串傳遞給ajax ... – dandavis

0

隨着Chrome和Firefox你可以閱讀文本文件的內容是這樣的:

HTML:

<input type="file" id="in-file" />  

JavaScript的使用jQuery:

var fileInput = $('#in-file'); 

fileInput.change(function(e) { 
    var reader = new FileReader(); 
    reader.onload = function(e) { 
     console.log(reader.result); 
    } 
    reader.readAsText(fileInput[0].files[0]); 
}); 

IE不支持FileReader對象。

相關問題