![](/img/trans.png)
[英]How to read local file that in located in the same directory as html using javascript
[英]Need help reading a file in Javascript located in the same directory
我編寫了此函數,以嘗試讀取與Javascript文件和index.html文件位於同一目錄中的文件。 我以前從文件中讀取過文件,但是通常我可以讓用戶自己選擇文件,因此我從來不必創建實際的文件對象。
有誰知道為什么下面的代碼不起作用?
function getFile()
{
var reader=new FileReader();
var file=new File("input.txt");
var str=reader.result;
reader.readAsText(file);
return str;
}
更新:
一些其他信息(如果我不回答您的問題,我深表歉意,對此我真的很陌生,我所知道的一切都是自學成才的)。
服務器端還是客戶端? 我認為這將在服務器端托管-我有一個域要將文件上傳到該域。
由於安全限制,無法執行。 您必須使用用戶選擇的文件。 想象一下,如果javascript可以讀取您硬盤上的任何文件,該怎么辦-噩夢!
對於用JS編寫的桌面應用程序,我有類似的代碼。 在IE和FF上運行良好,直到Chrome出現為止(是的,這是很久以前的事情了!),並開始對沙盒進行更多限制。 在某些時候,IE和FF還加強了權限,該方法不再起作用(我使用了不再起作用的這段代碼):
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(filename);
if (file.exists())
{
inStream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
inStream.init(file, 0x01, 00004, null);
sInStream = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream);
sInStream.init(inStream);
content = sInStream.read(sInStream.available());
}
} catch (ex) {
// and so on...
}
在某些時候,FF和Chrome具有一些啟動標志,這些標志使沙盒不受某些安全限制的約束,但最后我意識到這只是舊代碼。
今天,我使用localStorage
將數據存儲在本地計算機上。 唯一的缺點是必須實現導入/導出功能,以便通過復制/粘貼原始文本將其移植到其他瀏覽器/計算機上。
我要做的就是這個。 據說數據庫的最大大小約為10 MB(但已知存在偏差),我存儲的只是一個JSON字符串:
function store(data)
{
localStorage.data = JSON.stringify(data);
}
function retrieve()
{
return JSON.parse(localStorage.data);
}
顯然,這兩個函數過於簡化,您需要處理一些極端情況,例如不存在數據或導入非JSON字符串時。 但是,我希望您對如何在現代瀏覽器上存儲本地數據有個想法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.