Загрузка файлов в локальное хранилище вместо их хранения в облачном хранилище имеет несколько преимуществ. К ним относятся более легкий доступ, доступ без подключения к Интернету и полное владение вашими данными.
Вы можете загружать одиночные и несколько файлов, используя встроенные модули Node.js. Вместо этого вы также можете использовать стороннюю библиотеку для достижения тех же результатов.
Загрузка файлов без сторонней библиотеки
Чтобы загрузить файл с помощью Node.js без помощи сторонних пакетов, вам понадобятся три основных модуля Node.js: фс, https, и путь.
фс Модуль поддерживает множество файловых задач, включая чтение, создание, обновление, удаление и переименование. https Модуль создает веб-сервер для обработки запросов и доставки ответов. путь Модуль предоставляет способ взаимодействия с каталогами и путями к файлам.
Используя эти модули, вы можете отправить запрос HTTP GET для доступа к файловому ресурсу с веб-сервера, а затем сделать копию ресурса в вашей локальной системе.
Для начала импортируйте необходимые модули:
константа https = требовать('https');
константа фс = требовать('фс');
константа путь = требовать('путь');
Вам нужно будет использовать имя файла из URL-адреса в качестве хорошего имени по умолчанию, чтобы сохранить его. Вы можете использовать модуль пути .базовое имя() метод для получения имени файла из его URL. Этот метод принимает аргумент пути и возвращает последнюю часть пути.
Например:
константа имя_файла = путь.имя_базы (url);
Затем запросите файл с сервера, вызвав https.получить() метод. Этот метод принимает URL-адрес в качестве первого аргумента и функцию обратного вызова для ответа в качестве второго аргумента.
Пройти URL переменная в качестве первого аргумента, а затем функция обратного вызова для обработки, когда этот метод получает поток ответа:
https.get (url, (рез) => {
})
В функции обратного вызова вы можете использовать fs.createWriteStream() метод для создания нового записываемого потока, передавая имя файла переменная в качестве аргумента.
Например:
константа fileStream = fs.createWriteStream (имя файла);
разрешение.трубка(файловый поток);
создать поток записи () Метод упрощает процесс записи данных в файл, особенно когда вы работаете с большими блоками данных.
трубка() Затем метод отправляет поток данных ответа GET в файловый поток объект.
Чтобы вывести сообщение на консоль после того, как скрипт завершит загрузку файла, прикрепите .на() эмиттер событий в файловый поток переменная:
файлStream.on('заканчивать', () => {
файловый поток.закрывать();
консоль.бревно(«Загрузка завершена»);
});
Объект fileStream испускает заканчивать событие, когда он записал все данные в файл. поймать это через .на() метод и предоставить функцию обратного вызова, чтобы закрыть файловый поток и запишите сообщение на консоль.
Для лучшего исполнения и эффективное повторное использование скрипта, поместите этот код в функцию, которая принимает URL-адрес в качестве аргумента:
функцияЗагрузка файла(URL) {
константа имя_файла = путь.имя_базы (url);https.get (url, (рез) => {
константа fileStream = fs.createWriteStream (имя файла);
разрешение.трубка(файловый поток);
файлStream.on('заканчивать', () => {
файловый поток.закрывать();
консоль.бревно(«Загрузка завершена»)
});
})
}
Чтобы запустить функцию, вызовите ее и передайте URL-адрес файла, который вы хотите загрузить:
Загрузка файла([адрес файла]);
Чтобы запустить скрипт, откройте терминал и введите узел за которым следует имя файла JavaScript:
узел[название сценария]
Этот скрипт загрузит URL-адрес файла, который вы передали Загрузка файла() функцию и сохраните ее в своем рабочем каталоге.
Обработка ошибок при загрузке файлов
В Node.js при загрузке файлов могут возникать определенные ошибки, такие как запись в поток, плохое подключение к службе или проблемы с самим файлом. Крайне важно регистрировать сообщения об ошибках, когда эти ошибки имеют место, чтобы иметь возможность решить проблему.
Попробуйте/поймать блок
Блок try-catch — это программная структура, позволяющая обрабатывать потенциальные ошибки и исключения в коде.
Блоки try-and-catch составляют блок try...catch. Код блока try запускается первым, а код блока catch запускается, если блок try генерирует исключение.
пытаться {
Загрузка файла([адрес файла]);
} ловить (ошибка) {
консоль.лог (ошибка);
}
Используйте блок try/catch, чтобы убедиться, что вы можете отловить любые ошибки, связанные с загрузкой. Затем вы можете обработать любую ошибку по мере необходимости, например, зарегистрировать ее в консоли или повторить загрузку.
Код состояния ответа HTTP
Коды состояния для HTTP-ответов показывают, был ли успешно выполнен конкретный HTTP-запрос.
Например:
https.get (url, (рез) => {
константа код = res.statusCode();
консоль.лог (код)
константа fileStream = fs.createWriteStream (имя файла);
});
Если запрос возвращает код состояния за пределами диапазона успеха, 200-299, возникла проблема с запросом. Проверьте код состояния HTTP, затем посмотреть значение кода состояния для обработки ошибки по мере необходимости.
Загрузка нескольких файлов
Вы можете загружать несколько файлов одновременно, передавая URL-адреса файлов в качестве аргументов при запуске. узел [имя сценария]. Чтобы выполнить эту задачу, вы должны изменить определенные части вашего скрипта.
В JavaScript аргументы передаются вместе с узел Команда доступна в process.argv, свойстве глобального объекта Node.js. Это свойство возвращает массив аргументов командной строки. Первый элемент в этом массиве должен быть узел, фактическая команда, которую вы запускаете. Вторым будет имя файла скрипта, тогда каждый следующий аргумент должен быть URL.
Чтобы загрузить сразу несколько файлов, сохраните массив из процесс.argv в переменной. Затем запустите метод slice(), чтобы удалить первые два элемента, которые не являются URL-адресами:
константа аргументы = процесс.argv;
константа URL-адреса = args.slice(2);
кусочек() метод создает новый массив из выбранных элементов в массиве. Этот метод выбирает от указанного начала до указанного (не включающего) конца.
В этом случае передача значения 2 удаляет узел имя команды и имя файла вашего скрипта.
Окончательно, используя метод карты JavaScript, передайте каждый элемент в URL-адреса массив в Загрузка файла():
URL.карта(URL =>{
скачатьФайл (url)
});
Чтобы запустить код, введите узел вместе с именем вашего файла JavaScript и URL-адресами, которые вы хотите загрузить:
узел[название сценария]URL1URL2URL3
Использование сторонней библиотеки
Вы также можете загружать файлы с помощью сторонней библиотеки, такой как npm. скачать упаковка.
Внутри вашего каталога скриптов запустите следующую команду npm, чтобы установить скачать упаковка:
нпм установить скачать
Требуйте загруженный пакет в своем скрипте, затем сохраните аргументы командной строки в массиве:
константа скачать = требовать('скачать');
константа аргументы = процесс.argv;
константа URL-адреса = args.slice(2);
Теперь вы можете использовать скачать библиотека для скачивания файлов. Вы можете сделать это несколькими способами в зависимости от вашей конкретной цели.
Например:
асинхронныйфункцияЗагрузка файла(URL-адреса){
ЖдитеОбещать.все (urls.map((URL) => скачать (адрес, "файлы")))
};
скачатьФайл (URL);
Объявить Загрузка файла функционировать как асинхронныйи создайте Обещать дождаться завершения конкретной задачи с помощью Ждите ключевое слово. Карта URL-адреса массив к скачать функцию и передать имя локальной папки —"файлы", в данном случае — для хранения файлов.
Загрузка файлов в локальную файловую систему
Встроенные функции Node, такие как fs и https, упрощают написание загрузчика файлов. Чтобы сделать это еще проще, вы можете использовать сторонний модуль, такой как загрузка.
Оба метода позволяют загружать файлы с удаленного сервера и сохранять их в локальной файловой системе. Вы должны выбрать лучший метод для своих нужд и использовать его в своем следующем приложении Node.js.