2014-11-06 66 views
3

我嘗試在我的項目中運行FileReader函數,但它只適用於pas.Mon項目,所以我列出了目錄中的所有文件。這一切都有效。但是當我在列表中選擇一個文件(我的文件是本地的)時,我最終遇到了這個我不明白的錯誤:HTML5文件讀取器的問題

Uncaught TypeError:未能在'FileReader'上執行'readAsText':參數不是一個Blob。

這裏是我的代碼:

GetFileName function (fs) { 
     var target = event.target || event.srcElement; 

     var childs = target.parentNode.childNodes; 
     {for (i = 0; i ++; i <childs.length) 
         if (target == childs [i]) break; 
     } 

     console.log (i); // Index li 
     console.log (event.target.innerHTML); // li value 

     filename = "~/Downloads/snippets" + event.target.innerHTML; 

var fr = new FileReader(); 
fr.onload = function (e) { 
     console.log (e.target.result); 
}; 
fr.readAsText (filename); 
} 

有誰有什麼不行的想法?

非常感謝您的幫助!

+2

錯誤似乎足夠清晰。你不能給它提供一個'filename'。它期望文件或文件對象的「Blob」表示。 – Xan 2014-11-06 15:38:51

+0

我想知道你是如何列出文件。 – Xan 2014-11-06 15:56:14

回答

7

我認爲問題是,你的filename變量設置爲:

filename = "~/Downloads/snippets" + event.target.innerHTML; 

...這是一個字符串,而不是的預期由readAsText功能上FileReader的對象。

嘗試這樣代替:

var fileInputElement = document.getElementById("fileInputElement"); 
fr.readAsText(fileInputElement.files[0]); 

其中 「fileInputElement」 是file類型的HTML <input>元素的ID。

這可能與您正在做的事情不完全吻合,但要查看更多JavaScript和HTML並不容易。