2011-03-22 61 views
5

我有一個網頁,需要能夠從運行瀏覽器的本地機器將文件加載到DOM中。我發現使用HTML 5 File API很容易。與HTML 5的FileReader相當的HTML 4?

我可以這樣做:

var reader = new FileReader(); 
reader.onload = function (fileContents) { ... load contents to a div ... } 
reader.readAsText(f) //where f is an HTML5 File object 

煩人,我需要這在IE7的工作,也有一些早期版本的Firefox瀏覽器不支持的API。在舊版瀏覽器中是否有簡單的方法將本地文件加載到DOM中?

非常感謝!

+0

File API - http://www.w3.org/TR/FileAPI/ - 不是HTML5的一部分(僅用於記錄) – 2011-03-22 21:30:23

+0

@Šime - 謝謝,我的錯! – 2011-03-22 21:45:49

回答

5

除了這裏的其他答案,看起來對於舊版瀏覽器來說,沒有一致的方式來爲客戶端(除了Flash)執行此操作。

然而,對於IE7/8,我設法使用ActiveX來破解一些東西。

var filePath = f:\oo.txt; 
var fso = new ActiveXObject("Scripting.FileSystemObject"); 
var textStream = fso.OpenTextFile(filePath); 
var fileData = file.ReadAll(); 

然後我可以把它傳遞給與上面問題中的reader.onload相同的函數。很明顯,這是一個糟糕的,很冒險的解決方案,並且可能會被一些安全策略阻止 - 儘管它至少適用於IE7!

+0

嘿喬恩,我正在看你在這裏的這個例子,但我得到一個錯誤:自動化服務器不能創建對象。我的想法? – Fallenreaper 2012-06-25 20:05:08

+0

您需要轉到Internet選項 - >安全性 - >自定義級別,然後啓用'初始化和腳本編寫的ActiveX控件未標記爲安全' – danwellman 2012-08-07 21:32:33

6

不,您不能在較舊的瀏覽器中執行此操作。 FileReader(真正的文件系統訪問)是一種新的HTML5功能,它在舊版瀏覽器中不受支持。

在舊的瀏覽器你最好的選擇要麼是:

  1. 一個Silverlight,Flash或Java應用程序(或類似),關於客戶端運行,並具有本地文件系統的訪問。
  2. 讓用戶使用<input type="file">元素上傳文件,並執行處理服務器端。
+0

這是真的,但有一個iframe的方法,也可以在沒有任何使用瀏覽器插件或額外的服務器端處理的情況下工作,雖然有點破解...查看我的答案或檢查了這.... .... http: //www.alfajango.com/blog/ajax-file-uploads-with-the-if​​rame-method/ – 2013-11-15 05:37:02