привет, я использую java-скрипт для чтения txt-файла с моего компьютера. я пытаюсь сделать это в 3 способами, как, что:читать файл из локального хранилища с помощью js
function readTextFile(file) {
var rawFile = new XMLHttpRequest();
rawFile.open("GET", file, false);
rawFile.onreadystatechange = function() {
if (rawFile.readyState === 4) {
if (rawFile.status === 200 || rawFile.status == 0) {
var allText = rawFile.responseText;
console.log(allText);
}
}
}
rawFile.send(null);
}
console.log("1");
readTextFile("text.txt"); //GOOD
console.log("2");
readTextFile("D:/Documents/Documents/Aptana Studio 3 Workspace/Yonit_web_services/test/text.txt"); //BAD
console.log("3");
readTextFile("file:///D:/Documents/Documents/Aptana Studio 3 Workspace/Yonit_web_services/test/text.txt"); //BAD
все они указывают на тот же файл я получил сообщение об ошибке вроде этого:
XMLHttpRequest не может загрузить файл: /// D: /Documents/Documents/Aptana%20Studio%203%20Workspace/Yonit_web_services/test/text.txt. Запросы на кросс-начало поддерживаются только для HTTP. test.html: 21readTextFile test.html: 21 (анонимная функция) test.html: 26
whay is that? Благодарю.
JavaScript не может получить доступ к локальной файловой системе по соображениям безопасности. –
'XMLHttpRequest' имеет некоторые ограничения с перекрестным происхождением. При этом, как вы это делаете, 'D: /' и 'file: /// D: /' заставляет файл получить доступ за пределами источника. –
вам нужно использовать для чтения локальных файлов в javascript. вы выбираете файл, затем запускаете URL.createObjectURL (inpFile.files [0]); чтобы получить URL-адрес, который вы можете подавать в вашу функцию readTextFile() как закодированную. вы не можете жестко закодировать путь во вводе, пользователь должен выбрать файл по соображениям безопасности. – dandavis