Как скачать файл node js

Как скачать файл с Node.js (без использования сторонних библиотек)?

Как загрузить файл с Node.js без использования сторонних библиотек ?

Мне не нужно ничего особенного. Я хочу только загрузить файл из заданного URL, а затем сохранить его в заданном каталоге.

24 ответа

Можем ли мы создать tar-файл без использования сторонних библиотек? Заранее спасибо. С Уважением, Сринат Редди

Есть ли какой-нибудь быстрый способ сопоставить некоторые IDataReader с объектом без сторонних библиотек, таких как AutoMapper или ValueInjecter?

Вы можете создать запрос HTTP GET и передать его response в поток файлов, доступных для записи:

Если вы хотите поддержать сбор информации в командной строке-например, указать целевой файл или каталог или URL-проверьте что-то вроде Commander .

Не забывайте обрабатывать ошибки! Следующий код основан на ответе Аугусто Романа.

Как сказала Мишель Тилли, но с соответствующим потоком управления:

Не дожидаясь события finish , наивные сценарии могут получить неполный файл.

Edit: Спасибо @Augusto Roman за указание на то , что cb должен быть передан в file.close , а не вызываться явно.

Говоря об обработке ошибок, еще лучше слушать ошибки запросов. Я бы даже проверил, проверив код ответа. Здесь это считается успехом только для кода ответа 200, но другие коды могут быть хорошими.

Несмотря на относительную простоту этого кода, я бы посоветовал использовать модуль запроса , поскольку он обрабатывает гораздо больше протоколов (hello HTTPS!), которые изначально не поддерживаются http .

Это было бы сделано так:

Мне нужен пример кода для распознавания лиц с помощью C#.net без использования сторонних библиотек. Я хочу добиться этого с помощью библиотек microsoft. Я прошел по этой ссылке http:/ / www.codeproject.com / Articles/239849 / Multiple-face-detection-and-recognition-in-real-ti , но в этой ссылке.

Я пытаюсь использовать image1.Picture.LoadFromFile(MyTiffFile) для загрузки TIFF-файла в Timage , но tiff не поддерживается. Есть ли какой-нибудь способ добиться этого без использования каких-либо сторонних библиотек?

ответ gfxmonk имеет очень жесткую гонку данных между обратным вызовом и завершением file.close() . file.close() фактически принимает обратный вызов, который вызывается после завершения закрытия. В противном случае немедленное использование файла может завершиться неудачей (очень редко!).

Не дожидаясь события finish, наивные сценарии могут получить неполный файл. Без планирования обратного вызова cb через close вы можете получить гонку между доступом к файлу и фактической готовностью файла.

Возможно, node.js изменился, но, похоже, есть некоторые проблемы с другими решениями (с использованием узла v8.1.2):

  1. Вам не нужно вызывать file.close() в событии finish . По умолчанию значение fs.createWriteStream равно autoClose: https://nodejs.org/api/fs.html#fs_fs_createwritestream_path_options
  2. file.close() следует вызывать по ошибке. Возможно, это не нужно, когда файл удален ( unlink() ), но обычно это: https://nodejs.org/api/stream.html#stream_readable_pipe_destination_options
  3. Временный файл не удаляется на statusCode !== 200
  4. fs.unlink() без обратного вызова является устаревшим (выводит предупреждение)
  5. Если файл dest существует, он переопределяется

Ниже приведено модифицированное решение (с использованием ES6 и promises), которое решает эти проблемы.

Решение с таймаутом, предотвращение утечки памяти :

Следующий код основан на ответе Брэндона Тилли :

Не создавайте файл, когда вы получаете ошибку, и предпочитайте использовать тайм-аут, чтобы закрыть запрос после X секунд.

для тех, кто пришел в поисках способа, основанного на обещаниях в стиле es6, я думаю, это будет что-то вроде:

Код Винса Юаня великолепен, но, похоже, что-то не так.

Привет, я думаю, вы можете использовать модуль child_process и команду curl.

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

Я предпочитаю request(), потому что вы можете использовать с ним как http, так и https.

✅Таким образом , если вы используете конвейер, он закроет все остальные потоки и убедится в отсутствии утечек памяти.

Рабочий пример:

Загрузите с помощью promise, которые разрешают читаемый поток. добавьте дополнительную логику для обработки перенаправления.

Основываясь на других ответах выше и некоторых тонких вопросах, вот моя попытка.

  1. Создайте fs.createWriteStream только в том случае, если вы получите код состояния 200 OK . Это уменьшает количество команд fs.unlink , необходимых для очистки временных дескрипторов файлов.
  2. Даже на 200 OK мы все еще можем использовать reject из-за того, что файл EEXIST уже существует.
  3. Рекурсивно вызовите download , если вы получаете перенаправление 301 Moved Permanently или 302 Found (Moved Temporarily) по ссылке, указанной в заголовке.
  4. Проблема с некоторыми другими ответами, рекурсивно вызывающими download , заключалась в том, что они вызывали resolve(download) вместо download(. ).then(() => resolve()) , поэтому Promise возвращался до того, как загрузка фактически завершалась. Таким образом, вложенная цепочка обещаний разрешится в правильном порядке.
  5. Может показаться классным очистить временный файл асинхронно, но я решил отклонить его только после того, как он будет завершен, поэтому я знаю, что все от начала до конца делается, когда это обещание разрешается или отклоняется.

Если вы используете экспресс, используйте метод res.download(). в противном случае используйте модуль fs.

Путь : img тип : jpg случайный uniqid

download.js (т. е. /project/utils/download.js)

app.js

Без библиотеки это может быть глючно, просто чтобы указать. Вот несколько:

  • Не может обрабатывать перенаправление http, как это url https://calibre-ebook.com/dist/portable , которое является двоичным.
  • http модуль не может https url, вы получите Protocol "https:" not supported.

Вот мое предложение:

  • Вызовите системный инструмент, такой как wget или curl
  • используйте какой-нибудь инструмент, например node-wget-promise , который также очень прост в использовании. var wget = require(‘node-wget-promise’); wget(‘http://nodejs.org/images/logo.svg’);

Написание собственного решения, так как существующее не соответствовало моим требованиям.

Что это покрывает:

  • HTTPS загрузка (переключите пакет на http для HTTP загрузок)
  • Функция, основанная на обещаниях
  • Ручка направляются путь (статус 302)
  • Заголовок браузера-требуется на нескольких CDNs
  • Имя файла из URL (а также жестко закодированное)
  • Обработка ошибок

Он напечатан на машинке, так безопаснее. Не стесняйтесь отбрасывать типы, если вы работаете с plain JS (no Flow, no TS) или конвертировать в файл .d.ts

Вот еще один способ справиться с этим без зависимости от третьей стороны, а также поиска перенаправлений:

Похожие вопросы:

Я пытаюсь показать загруженную страницу HTML в приложении. Пожалуйста, объясните самый простой способ сделать это без использования каких-либо сторонних библиотек. овации,

Есть ли способ запустить JVM (с указанным классом Java для запуска и, возможно, некоторыми аргументами) из Python без сторонних библиотек (например, Jython)? Может быть, с модулем подпроцесса.

В своем проекте я хочу найти, какова версия сторонних библиотек. У меня есть только файл jar, и некоторые из них содержат файл манифеста с номером версии, а другие-нет. Есть ли другой путь, кроме.

Можем ли мы создать tar-файл без использования сторонних библиотек? Заранее спасибо. С Уважением, Сринат Редди

Есть ли какой-нибудь быстрый способ сопоставить некоторые IDataReader с объектом без сторонних библиотек, таких как AutoMapper или ValueInjecter?

Мне нужен пример кода для распознавания лиц с помощью C#.net без использования сторонних библиотек. Я хочу добиться этого с помощью библиотек microsoft. Я прошел по этой ссылке http:/ /.

Я пытаюсь использовать image1.Picture.LoadFromFile(MyTiffFile) для загрузки TIFF-файла в Timage , но tiff не поддерживается. Есть ли какой-нибудь способ добиться этого без использования каких-либо.

Есть ли в любом случае экспорт в excel с использованием .Net framework 4.5 или выше без использования каких-либо сторонних библиотек DLL ?

Я просто хочу загрузить файл .gz из файла URL и сохранить его в папке. Я хотел бы сделать это без каких-либо сторонних библиотек, если это возможно. Вот что у меня есть до сих пор, но он загружает.

Как загрузить файл NodeJS

Как загрузить файл NodeJS на гитхаб? Самой-то проблемы загрузить нет, но как сделать, чтобы он там взаимодействовал с другими файлами?

У GutHub есть функция публикации статики GitHub Pages, например так опубликован UNetbootin.

Если нужен бесплатный NodeJS хостинг, попробуйте Heroku, там есть сервер ноды.

Альтернатива — покупка VDS, цены более чем доступные.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками node.js github или задайте свой вопрос.

дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.12.3.40888

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Как загрузить файл на node.js сервер без сторонних библиотек?

Как загрузить файл на node.js сервер без сторонних библиотек ? Что происходит с файлом когда он загружается через форму ? Какой формат он приобретает ? И как просмотреть настоящее содержимое этого файла ?
Вот html код странички где только input для загрузки файла и кнопка для сабмита формы

Вот код файла script.js который просто отправляет файл из формы на сервер:

И наконец код на бекенде, который принимает и записывает файл:

Весь код рабочий, и хорошо справляется со своей задачей, но как выясняется отправляется не файл а какая то фигня, неизвестного формата. Если файл изначально весил 185 кб, то загруженный весит 300 кб,
первые строки в хексе файла оригинала:
5d812c9421d0e918278273.png
и загруженного:
5d812d42c2299026715535.png
И я начал упорно гуглить, что же происходит с файлом, когда он загружается через форму, и как с этим быть. Толком ничего не нашел, но узнал что файл можно прочитать с помощью file api. Прочитал файл методом reader.readAsText() , думал с помощью этого получу содержимое файла, но ничего не изменилось, файл отправляется точно таким же форматом.
вот мой измененный код под file api script.js:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *