2014-10-06 3 views
1

Я работаю над проектом, который должен быть автономным и работать без подключения к Интернету. Это для видео-презентаций, и мне нужно импортировать .txt-файл, который включает в себя главы и информацию о цикле, такие как заголовок главы, точка цикла и конечная точка раздела (оба в кадрах). Тем не менее, на клиентской стороне нет сценария для включения текстового файла.Нужна доступ к локальному текстовому файлу с помощью JavaScript

Что может быть лучшим способом для хранения или доступа к локальному текстовому файлу, чтобы я мог перебирать его и строить объект главы? HTML5 локальное хранилище? Взломать, включив скрытый iframe, который загружает текстовый файл, затем захватить содержимое этого тела с помощью JavaScript? Любая помощь по этому вопросу была бы весьма признательна.

Спасибо!

+0

Если вы запустили приложение из локального файла многие браузеры предоставляют некоторый способ доступа к локальной файловой системе через ajax. – Bergi

+0

Будет ли загрузка файла приемлемой, или файл должен быть прочитан в фоновом режиме при загрузке приложения? – Bergi

+0

Кажется, что вы делаете, это вытягивание данных для целей показа. Как хранятся эти данные? –

ответ

2

Вы можете использовать AJAX для чтения текстового файла.
с javascript, котор вы не можете отредактировать, вы можете только прочитать его.
пример будет:
1- создать текстовый файл «page.txt»
2- создать HTML-страницу с этим кодом

<!DOCTYPE html> 
<html> 
<body> 
<script> 
    text = new XMLHttpRequest(); 
    text.open("GET","page.txt",false); 
    text.onload = function(){ 
     document.write(text.responseText); 
    } 
    text.send(); 
</script> 
</body> 
</html> 
+2

Вопрос заключается в том, что решение должно работать без подключения к Интернету. Какова была бы цель AJAX здесь? – lxg

+1

Нам не нужен интернет для использования Ajax. –

+0

Согласен, но какой ресурс вы бы получили с AJAX? AJAX нужен сервер, и в приведенном выше сценарии («автономный») нет сервера. – lxg

3

Для вашего вопроса «необходимо иметь доступ к локальной текстовый файл с помощью JavaScript »очень похож на этот вопрос здесь: Local file access with javascript

Ответ, действительно, нет хорошего способа получить доступ к локальному файлу, если вы используете javascript в браузере. Если его просто текстовый файл на том же компьютере без http/webserver, вы можете столкнуться с некоторыми проблемами, так как в javascript возможность чтения локального файла по умолчанию отключена в большинстве браузеров. В chrome вы можете отключить эту функцию безопасности, добавив следующий флаг при запуске браузера из командной строки.

повреждают-веб-безопасности

Если ваши данные структурированы json, xml, csv, вы можете привести его в использовании AJAX call, если файл размещен на сервере, доступном с HTTP. Без использования AJAX вызова HTTP, другим возможным решением, как указано в ссылке выше вопрос:

Просто обновление HTML5 особенности http://www.html5rocks.com/en/tutorials/file/dndfiles/ Это отличная статья объяснит ан подробно доступ к локальным файлам в Javascript. Резюме из указанной статьи:

Спецификация обеспечивает несколько интерфейсов для accessing files from a 'local' filesystem:

Файл - отдельный файл; предоставляет информацию на основе readonly, такую ​​как имя, размер файла, тип mimetype и ссылку на дескриптор файла. FileList - массивная последовательность объектов File. (Подумайте или перетащите каталог файлов с рабочего стола). Blob - Позволяет разрезать файл в байтовые диапазоны. - @Horst Walter

Как показано ниже, вы можете иметь «загрузить файл» выбор входа, и просто иметь свой путь к файлу в качестве опции по умолчанию для ввода»

<input type="file" id="files" name="files[]" multiple /> 
<output id="list"></output> 

<script> 
    function handleFileSelect(evt) { 
    var files = evt.target.files; // FileList object 

    // files is a FileList of File objects. List some properties. 
    var output = []; 
    for (var i = 0, f; f = files[i]; i++) { 
     output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ', 
        f.size, ' bytes, last modified: ', 
        f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a', 
        '</li>'); 
    } 
    document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>'; 
    } 

    document.getElementById('files').addEventListener('change', handleFileSelect, false); 
</script> 
+0

Прочитав это, я думаю, что это должно сработать. Есть ли способ, которым вы можете думать об этом, позволит мне динамически передавать имя файла handleFileSelect в отличие от его запуска с помощью ввода файла? – Yuschick

Смежные вопросы