Можно ли загрузить файл с помощью JS/HTML5 FileReader на странице без обслуживания?
Я хочу создать простую игру в HTML5/JS, и я не хочу, чтобы пользователь запускал любой веб-сервер или подключался к веб-сайту. (только HTML-страница)
Но похоже, что FileReader можно использовать только для ввода типов файлов.
Возможно ли иметь только два файла: index.html и foo.txt бок о бок и читать foo.txt из index.html с чем-то вроде:
// No input needed, I know waht I want to read
var my_file = new File("foo.txt");
var reader = new FileReader();
alert( reader.readAstext( my_file, "UTF-8" ) );
Любая идея?
Ответы
Ответ 1
Я считаю, что это ваш ответ: Как открыть файл локального диска с помощью Javascript?
Короче говоря, вы смотрите что-то вроде этого:
<input type="file" id="files" name="file" />
HTML5 позволяет загружать файлы, которые хранятся локально на компьютере, но вы не можете выбрать его. Пользователь должен выбрать файл, который он/она хочет загрузить.
Представьте себе, что произойдет, когда разработчики (или лучше говорящие, хакеры) получат доступ к локальным данным everyones...
Ответ 2
Это старый вопрос, и я уверен, что многие люди столкнулись с теми же проблемами, но, как только JS станет самостоятельным приложением (и это раздражает, что нужно взломать один путь, но я думаю все чаще JS-приложения будут клиент-сервером в любом случае), тогда все равно будет необходимо собрать некоторые поддерживающие инструменты.
Один из способов создания данных в обслуживаемом виде, а затем передать его JavaScript, который я использую, - это написать простой script, который принимает набор файлов содержимого и анализирует содержимое в JSON в большой старой data.js файл. Затем это можно включить и вести себя точно так же, как обычные объекты Javascript. Можно также использовать JSON для хранения данных, в первую очередь, но это намного более многословно, чем что-то вроде простого CSV, если у вас много данных для вашего приложения.
Ответ 3
У меня есть чит-код для этого случая.
Я назвал свой файл JSON как .js: jsonfile.js, который содержит мои данные json в виде строковой переменной:
var jsondata = '{ "foo" : "bar" }';
В моем index.html, я включаю его, перед моим .js с кодом:
<html>
<head>
<script type="text/javascript" src="mydata/jsonfile.js"></script>
<script type="text/javascript" src="js/mycode.js"></script>
Затем я могу получить свои данные как объект JSON в mycode.js следующим образом:
var data = JSON.parse(jsondata);
alert(data.foo);