2012-09-11 66 views
3

FileReader允許在Chrome中讀取本地文件。在javascript中可以讀取IE中的本地文件嗎?

function readMultipleFiles(evt) { 
    var files = evt.target.files; 

    if (files) { 
     for (var i = 0, f; f = files[i]; i++) { 
      var r = new FileReader(); 
      r.onload = (function (f) { 
       return function (e) { 
        var contents = e.target.result; 
        document.getElementById("output").innerHTML = contents; 
       }; 
      })(f); 
      r.readAsText(f); 
     } 
    } else { 
     alert("Failed to load files"); 
    } 
} 
document.getElementById('fileinput').addEventListener('change', readMultipleFiles, false);​ 

Run example on jsfiddle.net

但是這個例子沒有在Internet Explorer 9,工作
IE9是否支持文件API?
如果是 - 我應該怎麼做才能在IE9中讀取本地文件?

回答

0

IE9是否支持File API?

No, it doesn't

如果是 - 我應該怎麼做才能在IE9中讀取本地文件?

您的意思是如果不是?如果是這樣,那麼你可以使用ActiveX或只是通知用戶他的瀏覽器不支持你網站的這個功能,並允許他將文件上傳到服務器。

+0

謝謝你的鏈接。我現在想要使用ActiveX。我只需要我們團隊使用的本地應用程序需要此功能。所以我只能說我的應用程序與Chrome和Mozilla兼容。 –

1

如果您創建了超文本應用程序(.hta),您將能夠創建ActiveX對象FileSystemObject,這將允許您訪問本地文件系統。

1

一般沒有。讀本地文件是一個巨大的安全違規。

3

您可以使用ActiveX' FileSystemObject.

var fso = new ActiveXObject("Scripting.FileSystemObject"); 
var a = fso.CreateTextFile("c:\\testfile.txt", true); 
a.WriteLine("This is a test."); 
a.Close(); 
0

似乎FileSystemObject像一個隱藏的怪物..

var fso, file, fileName = '/file.txt', fileContents = ''; 
if (fileName) { 
    fso = new ActiveXObject('Scripting.FileSystemObject'); 
    // don't worry about 'camelCase' typing, works both 
    if (fso.fileExists(fileName)) { 
     file = fso.openTextFile(fileName, 1); 
     fileContents = file.readAll(); 
     // or loop over lines 
     // while (!file.atEndOfStream) { 
     //  fileContents += file.readLine(); 
     // } 
     file.close(); 
    } 
} 

更多信息:https://msdn.microsoft.com/en-us/library/314cz14s(v=vs.85).aspx

相關問題