2013-01-16 33 views
3

我爲本地文件處理創建了一個測試,但無法獲得「文件」類型以返回Chrome或Firefox中的任何內容。 Chrome不會給出任何錯誤,並且不會調用FileReader(),Firefox會給出一個奇怪的錯誤。 FileReader()在Blob類型上工作正常。有任何想法嗎?請參見下面的測試代碼:File API FileReader()readAsText函數不適用於「文件」類型

<head> 

<script language="JavaScript" type="text/javascript"> 

var ContentString='(empty)'; 

var reader = new FileReader(); 
var testBLOB = new Blob(['Test Blob'], { "type" : "text/plain" }); 
reader.onload = function(event) {ContentString = event.target.result;}; 
reader.onerror = function(event) {alert('Load error!');}; 

function WriteContents(Iteration,FileOrBlob) 
{ 
    if (Iteration==0) 
    { 
     if (FileOrBlob==0) 
     { 
      try 
      { 
      var fileUpload=document.getElementById("inputFile"); 
      //alert(fileUpload.type); 
      reader.readAsText(fileUpload/*, "UTF-8"*/); 
      } 
      catch(err) {alert(err.message);} 
     } 
      else 
     { 
     reader.readAsText(testBLOB/*, "UTF-8"*/); 
     } 
    } 

    document.getElementById("Iteration").innerHTML=Iteration; 
    document.getElementById("ContentString").innerHTML=ContentString; 
    document.getElementById("error").innerHTML=reader.error; 
    document.getElementById("readyState").innerHTML=reader.readyState; 
    document.getElementById("result").innerHTML=reader.result; 

    setTimeout('WriteContents('+(Iteration+1)+','+FileOrBlob+');',5000); 
} 

if (window.File && window.FileReader && window.FileList && window.Blob) {document.write('OK<br>');} else {document.write('Browser Error<br>');} 

</script> 

</head> 

<br> 
<input type="file" id="inputFile" name="inputFile" onchange="WriteContents(0,0);">&nbsp; 
<input type="button" onclick="WriteContents(0,1);" value="Use Test Blob"> 
<br><br> 
<table border=1> 
<tr><td>Iteration</td><td id="Iteration">Choose File or Blob Above (one time only please!)</td></tr> 
<tr><td>ContentString</td><td id="ContentString"></td></tr> 
<tr><td>error</td><td id="error"></td></tr> 
<tr><td>readyState</td><td id="readyState"></td></tr> 
<tr><td>result</td><td id="result"></td></tr> 
+0

「open chrome with the flag --allow-file-access-from-files」回答的類似問題不適用於... – CraigDub

回答

3

發現在這個職位的答案:

File API: Returns file reference (object) or whole file content (string)?

您需要訪問 '文件' 的BLOB的一部分 - 這些線路

var fileUpload=document.getElementById("inputFile"); 
reader.readAsText(fileUpload/*, "UTF-8"*/); 

應該是

var fileUpload=document.getElementById("inputFile").files[0]; 
reader.readAsText(fileUpload/*, "UTF-8"*/); 

只有9個字符!

相關問題