Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.01.2016, 13:43
Аватар для annie88
Кандидат Javascript-наук
Отправить личное сообщение для annie88 Посмотреть профиль Найти все сообщения от annie88
 
Регистрация: 25.09.2015
Сообщений: 101

Чтение файла на стороне клиента
Добрый день!

Не могли бы Вы мне помочь? Есть некое приложение создающее на стороне клиента файл и записывающее в него какую-то информацию.
Как можно средствами javascript эту информацию считать? Все действия должны происходить только на стороне клиента, без сохранения файла на сервере.
P.S. думала в сторону cookie и locallstorage, но не знаю может ли десктопное приложение что-то туда писать.
Ответить с цитированием
  #2 (permalink)  
Старый 11.01.2016, 15:00
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

annie88, считать содержимое файла на стороне клиента легко:
При помощи input type="file" выбираем файл на клиентском компьютере и через объект типа FileReader считываем его содержимое:

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" >
    <title>Untitled Page</title>
    <script type="text/javascript">
         function readFile() {
           var selectedFile = document.getElementById('inputFile').files[0];
           var reader = new FileReader();
           reader.onload = function (e) {
             var FileContent = e.target.result;
			 parseContent(FileContent);
           };
           reader.readAsText(selectedFile);
	     }

         function parseContent(content) {
             alert(content);
         }
    </script>
  </head>
  <body>
     <input id="inputFile" type="file"  onchange="readFile()">
  </body>
</html>

А вот потом содержимое файла надо разобрать...
Ответить с цитированием
  #3 (permalink)  
Старый 11.01.2016, 15:07
Аватар для annie88
Кандидат Javascript-наук
Отправить личное сообщение для annie88 Посмотреть профиль Найти все сообщения от annie88
 
Регистрация: 25.09.2015
Сообщений: 101

Спасибо))) а можно считать файл без вывода окон? просто считывать данные со статично расположенного файла (имя его тоже известно и оно не меняется)?
Ответить с цитированием
  #4 (permalink)  
Старый 11.01.2016, 15:27
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Естественно можно!
Тогда не нужен input, и в функции readFile() не нужна строка получения имени файла из input'а
var selectedFile = document.getElementById('inputFile').files[0];

Известное имя файла нужно подставить в reader.readAsText(file);
Можно передать имя файла в функцию readFile() в качестве параметра
Ответить с цитированием
  #5 (permalink)  
Старый 11.01.2016, 15:52
Аватар для annie88
Кандидат Javascript-наук
Отправить личное сообщение для annie88 Посмотреть профиль Найти все сообщения от annie88
 
Регистрация: 25.09.2015
Сообщений: 101

Здорово))) однако не совсем понятно как можно сформировать объект для передачи в качестве параметра в reader.readAsText?
Ответить с цитированием
  #6 (permalink)  
Старый 11.01.2016, 16:07
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от annie88 Посмотреть сообщение
Здорово))) однако не совсем понятно как можно сформировать объект для передачи в качестве параметра в reader.readAsText?
Какой объект? Известное имя файла? Простая символьная переменная...
например

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" >
    <title>Untitled Page</title>
    <script type="text/javascript">
         function readFile(selectedFile) {
            var reader = new FileReader();
           reader.onload = function (e) {
             var FileContent = e.target.result;
             parseContent(FileContent);
           };
           reader.readAsText(selectedFile);
         }
 
         function parseContent(content) {
             alert(content);
         }
    </script>
  </head>
  <body>
     <input  type="button"  onclick="readFile('C:\Test\TestFile.txt')">
  </body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 11.01.2016, 16:19
Аватар для annie88
Кандидат Javascript-наук
Отправить личное сообщение для annie88 Посмотреть профиль Найти все сообщения от annie88
 
Регистрация: 25.09.2015
Сообщений: 101

Сообщение от Dilettante_Pro
Какой объект? Известное имя файла? Простая символьная переменная...
selectedFile не символьная переменная, это объект
Ответить с цитированием
  #8 (permalink)  
Старый 11.01.2016, 16:24
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от annie88 Посмотреть сообщение
selectedFile не символьная переменная, это объект
В обоих моих примерах это ПРОСТАЯ СИМВОЛЬНАЯ ПЕРЕМЕННАЯ. (Ну, пардон, СТРОКОВАЯ в терминологии JS)
В первом примере она получает значение (символьное) из input, во втором - как параметр функции из символьной строки при вызове функции

Последний раз редактировалось Dilettante_Pro, 11.01.2016 в 16:36.
Ответить с цитированием
  #9 (permalink)  
Старый 11.01.2016, 16:37
Аватар для annie88
Кандидат Javascript-наук
Отправить личное сообщение для annie88 Посмотреть профиль Найти все сообщения от annie88
 
Регистрация: 25.09.2015
Сообщений: 101

Сообщение от Dilettante_Pro
В обоих моих примерах это ПРОСТАЯ СИМВОЛЬНАЯ ПЕРЕМЕННАЯ.
console.log(selectedFile) вывел в firebug что-то вроде :
File { name="file.txt", lastModified=1449139811127, lastModifiedDate=Date,...}

Последний раз редактировалось annie88, 11.01.2016 в 16:41.
Ответить с цитированием
  #10 (permalink)  
Старый 11.01.2016, 16:52
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Да, пардон, это Blob...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение файла на стороне клиента. doox911 Общие вопросы Javascript 2 17.01.2014 00:49
Чтение файла Oleg_Antonov AJAX и COMET 3 11.10.2012 13:27
Чтение из тектового файла Jackky Общие вопросы Javascript 14 30.06.2012 01:00
Подгрузка информации через DIV с обработкой файла на стороне сервера Azartno jQuery 1 26.05.2012 15:07
Сохранение данных на стороне клиента средствами Javascript baal1988 Events/DOM/Window 4 24.08.2008 21:32