Как прочитать содержимое локального файла в JavaScript

#javascript #file

Вопрос:

Я хочу начать с того, что я не думаю, что это дубликат, потому что любой другой вопрос, который я нашел такого рода, основан на получении содержимого файлов из тега document.getElement, в котором пользователь выбирает файл и переходит оттуда. Я пытаюсь прочитать файл, который находится в папке на моем компьютере. В моем диске C. Я не смог найти ничего в этом роде и был бы признателен за любую помощь или указание в правильном направлении. Я пытаюсь выяснить, возможно ли это или нет, используя необработанный v8 js.

Комментарии:

1. Вы ничего не нашли, потому что это невозможно. У JS нет доступа к локальной файловой системе, единственный способ-это <input type="file"> .

2. Правильное направление-защитить любой файл на вашем компьютере, чтобы его не прочитал ни один скрипт на любом сайте))

3. Если это серверное приложение, используете ли вы Node или какую-либо другую среду JS/native? Если да, пожалуйста, включите это в свои теги и свой вопрос, потому что это важная информация.

4. Бэкэнд? В вашем вопросе нет ни слова о бэкэнде … Если у вас есть приложение nodejs, сохраните файлы в папке внутри папки установки вашего узла.

5. JavaScript запускается в среде, в JS нет никаких методов ввода-вывода, он даже не может ничего выводить без среды.

Ответ №1:

Это во многом зависит от контекста и от того, где в данный момент находится файл.

Для файла, указанного пользователем, ваш единственный способ доступа к нему-попросить пользователя загрузить его с помощью <input type="file"> элемента ввода.

Для бэкэнд-файла (т. Е. на вашем компьютере) в JS существует несколько различных сред выполнения, все из которых имеют разные методы импорта или ссылки на локальные файлы.

Вы упоминаете в комментарии, что используете «необработанный» JS через движок V8, который не имеет никаких возможностей для доступа к локальным файлам.

Однако, если вы настроите доступ к Node.js экосистема библиотек вы можете использовать fs инструмент загрузки файлов, например:

 fs.readFile('filepath', (err, data) => {
  if (err) throw err;
  console.log(data);
});
 

(документы здесь)

Комментарии:

1. Ни одно из решений в этом ответе не отвечает на проблему, потому что @Luke сказал: «Я не использую node или любую другую платформу». Он также сказал в вопросе, что не собирается использовать <input type="file"> .

2. Они отвечают на общий вопрос, с чем будущие люди столкнутся через Google. Более подробная информация была добавлена в комментариях с тех пор, как я написал этот ответ, но в зависимости от того, что подразумевается под «библиотекой TFC, в которой используется необработанный JavaScript v8», возможно, загрузка fs все еще возможна, или если при запуске необработанного js нет API файловой системы, которые я добавил в этот ответ.