我有這樣的檔案夾結構
index.html
file.txt
在index.html我有一個腳本想要讀取file.txt并將其分配給一個變數,比如x.
async function loadFile(file) {
let text = await file.text();
console.log(text);
return text
}
var x = loadFile("file.txt")
但這會回傳錯誤
main.js:35
Uncaught (in promise) TypeError: file.text is not a function
at loadFile (main.js:35:27)
at main.js:39:13
該怎么辦?我只想將file.txt內容分配給變數。
uj5u.com熱心網友回復:
瀏覽器中的 JavaScript 不能讓您直接訪問檔案系統。你所做的只是將一個字串傳遞給你的函式并呼叫text()它。可悲的是,它不是那樣作業的。
以下是我知道的兩種解決方法:
1.獲取api
如果您有一個 http 服務器為您的檔案提供服務,那么您可以使用fetch()JS 來獲取其內容。在此處閱讀檔案:
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
請注意,它不適用于使用file://URI 方案加載的頁面。你需要http(s)。如果您安裝了 python,則python -m http.server 8000在包含要提供的檔案的目錄中運行。
2. 檔案閱讀器
如果用戶要選擇檔案作為表單的輸入,那么您可以使用FileReader
看看這些鏈接:webdev 對此有很好的解釋
https://web.dev/read-files/
另請參閱檔案
https://developer.mozilla.org/en-US/docs/Web/API/FileReader
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/497509.html
標籤:javascript 文本 io
上一篇:無法阻止頁面重繪
