2017-04-08 36 views
-1

我想使用一個按鈕,而不是此輸入框來加載文本文件。當我按下按鈕時,我想加載一個名爲「me.txt」的文本文件,而不顯示瀏覽窗口。 (「me.txt」在相同的路徑中)。無論如何要這樣做?Javascript加載/讀取文本文件通過點擊一個按鈕

<input type="file" name="file" id="file"> 

<script> 
document.getElementById('file').onchange = function(){ 

    var file = this.files[0]; 

    var reader = new FileReader(); 
    reader.onload = function(progressEvent){ 
    var lines = this.result.split('\n'); 
    for(var line = 0; line < lines.length; line++){ 
     var wordStr = (lines[line]); 
     var index = wordStr.indexOf("="); // Gets the first index where a space occours 
     var word = wordStr.substr(0, index); // Gets the first part 
     var meaning = wordStr.substr(index + 1); 

     if (word=="a") { 
      document.write(meaning); 
     } 
    } 
    }; 
    reader.readAsText(file); 
}; 
</script> 
+1

你是什麼意思「在相同的路徑」?您的網頁是否通過http服務器打開?或者它只是通過文件架構打開? – tsh

+0

這是不可能的,打開一個文件在別人的電腦上沒有他們先選擇一個......將是一個**巨大的**安全問題 – LGSon

+0

如果在服務器上的文件然後簡單的GET請求會做。如果文件是使用本地文件系統,那麼沒有輸入就不可能實現[type = file] – dfsq

回答

0

如果用戶沒有主動選擇文件,則無法從用戶計算機讀取文件;並且您無法知道用戶計算機上該文件的真實路徑。瀏覽器正確地阻止了這兩件事。

當我按下按鈕時,我想加載名爲「me.txt」的文本文件,而不顯示瀏覽窗口。 (「me.txt」在相同的路徑中)。

如果你的意思是me.txt是一個文件,該文件作爲HTML頁面在同一路徑上該代碼運行在的話:

  1. 如果您使用的是Web服務器進程和訪問通過http://https://頁面,你可以用一個簡單的Ajax請求讀取該文件,例如:

    $.get("me.txt").then(function(data) { 
        // ...use data... 
    }); 
    
  2. 如果你只是從本地文件系統中運行(一個file:/// URL),它的很多改爲使用本地Web服務器進程。但是,如果你必須使用一個file:///網址,您無法讀取Chrome以外的其他本地文件,但你可以在Firefox:

    // NOT allowed from file:/// URLs not work in Chrome; is allowed in Firefox 
    $.ajax({ 
        url: "test.json", 
        dataType: "text" 
    }).then(function(data) { 
        // ...use data here 
    }); 
    

    Firefox將報告XML在控制檯解析錯誤,而且還會給你數據。

相關問題