В этом руководстве мы рассмотрим, как загружать и загружать PDF-файлы в Dropbox с помощью JavaScript. Мы будем использовать библиотеку axios
для выполнения HTTP-запросов, Dropbox
API для взаимодействия с Dropbox и регулярные выражения для извлечения URL-адресов PDF с веб-страницы.
Предпосылки
- Аккаунт Dropbox
- Токен доступа к Dropbox API
- Node.js и NPM установлены
Начиная
Сначала создайте новый проект Node.js и установите необходимые зависимости:
mkdir dropbox-pdf-download cd dropbox-pdf-download npm init -y npm install axios dropbox --save
Загрузка PDF-файлов
Мы будем использовать библиотеку axios
для выполнения HTTP-запросов и извлечения HTML-содержимого веб-страницы. Затем мы будем использовать регулярное выражение для извлечения URL-адресов PDF из HTML.
import axios from 'axios'; async function downloadPDFs() { const response = await axios.get('https://www.example.com'); const html = response.data; // regex pattern to extract PDF URLs const pattern = /https:\/\/www\.example\.com\/files\/\S+\.pdf/g; const matches = html.match(pattern); if (!matches) { console.log('No PDF files found.'); return; } // download each PDF for (const match of matches) { try { const response = await axios.get(match, { responseType: 'arraybuffer' }); const filename = match.split('/').pop(); const { size } = response.data; console.log(`Downloaded ${filename} (${size} bytes) from ${match}`); } catch (error) { console.error(`Error downloading ${match}:`, error); } } }
Загрузка PDF-файлов в Dropbox
Мы будем использовать Dropbox
API для взаимодействия с Dropbox и загрузки загруженных PDF-файлов.
import { Dropbox } from 'dropbox'; async function uploadPDFs() { // create Dropbox client const dbx = new Dropbox({ accessToken: '<your_access_token_here>' }); // read PDF files from directory const files = await fs.promises.readdir('./pdfs'); // upload each PDF to Dropbox for (const file of files) { try { const contents = await fs.promises.readFile(`./pdfs/${file}`); const uploadedFile = await dbx.filesUpload({ path: `/${file}`, contents, autorename: true, }); console.log(`Uploaded ${file} to Dropbox:`, uploadedFile); } catch (error) { console.error(`Error uploading ${file} to Dropbox:`, error); } } }
Собираем все вместе
Теперь мы можем объединить функции загрузки и загрузки в один скрипт.
import axios from 'axios'; import { Dropbox } from 'dropbox'; async function downloadPDFs() { const response = await axios.get('https://www.example.com'); const html = response.data; // regex pattern to extract PDF URLs const pattern = /https:\/\/www\.example\.com\/files\/\S+\.pdf/g; const matches = html.match(pattern); if (!matches) { console.log('No PDF files found.'); return; } // download each PDF for (const match of matches) { try { const response = await axios.get(match, { responseType: 'arraybuffer' }); const filename = match.split('/').pop(); const { size } = response // upload each PDF to Dropbox const uploadedFile = await dbx.filesUpload({ path: `/${filename}`, contents: response.data, autorename: true, }); console.log(`Uploaded ${filename} (${size} bytes) to Dropbox:`, uploadedFile); } catch (error) { console.error(`Error downloading or uploading ${match}:`, error); } } } downloadPDFs();
В этом разделе кода массив matches
содержит все URL-адреса PDF, извлеченные с веб-сайта руководств FDA.
Для каждого URL-адреса в массиве matches
функция axios.get()
используется для загрузки файла PDF. Параметр responseType
имеет значение 'arraybuffer'
, что указывает Axios возвращать данные ответа в виде ArrayBuffer, а не в виде строки. Это необходимо, поскольку файлы PDF являются двоичными файлами и не могут храниться в виде строк.
Затем переменная filename
извлекается из URL-адреса PDF с использованием метода split()
для разделения строки URL-адреса на каждый символ /
, а затем метода pop()
для извлечения последнего элемента в результирующем массиве, которым является имя файла.
Переменной size
присваивается свойство size
объекта response.data
, которое представляет собой размер файла PDF в байтах.
Наконец, метод filesUpload()
клиента Dropbox
используется для загрузки файла PDF в Dropbox. Параметр path
указывает место в Dropbox, куда следует загрузить файл, в данном случае это корневой каталог ('/'
) с переменной filename
в качестве имени файла. Параметр contents
указывает содержимое файла, который является response.data
ArrayBuffer. Для параметра autorename
установлено значение true
для автоматического переименования файла, если файл с таким именем уже существует в Dropbox.
Если при загрузке или выгрузке PDF-файла возникает ошибка, на консоль выводится сообщение об ошибке.
Наконец, downloadPDFs()
функция вызывается, чтобы инициировать загрузку и выгрузку файлов PDF.
Заключение
В этой статье мы продемонстрировали, как загружать и загружать PDF-файлы в Dropbox с помощью JavaScript. Мы использовали библиотеку Axios для выполнения HTTP-запросов, API Dropbox для взаимодействия с Dropbox и регулярные выражения для извлечения URL-адресов PDF с веб-страницы.
Этот метод может быть полезен для автоматизации процесса резервного копирования или совместного использования PDF-файлов. Используя JavaScript, мы можем создавать сценарии, которые можно запускать по расписанию или запускать по событию, что позволяет нам легко управлять большим количеством файлов.
Я надеюсь, что вы нашли эту статью полезной. Если у вас есть какие-либо вопросы или комментарии, пожалуйста, не стесняйтесь оставлять их ниже.