node-red-google-drive-storage 1.0.1
[](LICENSE)
Node-RED Google Drive Integration
Модуль Node-RED для загрузки, удаления и управления файлами на Google Диске. Поддерживает два метода аутентификации: Service Account и OAuth 2.0.
Содержание
Описание
Этот модуль предоставляет три узла для работы с Google Диском:
- Конфигурационный узел: Настройка аутентификации (Service Account или OAuth 2.0).
- Добавление файлов: Загрузка файлов на Google Диск.
- Удаление файлов: Удаление файлов с Google Диска.
Файлы автоматически становятся доступными для просмотра после загрузки.
Установка
Убедитесь, что у вас установлен Node-RED:
npm install -g node-red
Установите модуль:
npm install node-red-google-drive-storage
Перезапустите Node-RED:
node-red
Настройка
1. Создание учетных данных Google API
Для работы с Google Диском необходимо создать учетные данные в Google Cloud Console:
Service Account:
- Создайте новый проект в Google Cloud Console.
- Активируйте API Google Drive.
- Создайте Service Account и скачайте JSON-файл с учетными данными.
OAuth 2.0:
- Создайте OAuth 2.0 Client ID.
- Получите Refresh Token через процесс авторизации.
2. Настройка узлов
Конфигурационный узел
- Добавьте конфигурационный узел (
google-drive-config
) в панель конфигурации. - Выберите тип аутентификации:
- Для Service Account: Вставьте содержимое JSON-файла в поле "Учетные данные Service Account".
- Для OAuth 2.0: Введите Client ID, Client Secret, Redirect URI и Refresh Token.
Использование
Конфигурационный узел
- Название:
google-drive-config
- Описание: Настройка аутентификации для взаимодействия с Google API.
- Параметры:
- Тип аутентификации: Service Account или OAuth 2.0.
- Учетные данные: JSON для Service Account или параметры OAuth 2.0.
Добавление файлов
- Название:
google-drive-upload
- Описание: Загружает файлы на Google Диск.
- Входные данные:
msg.payload
: Файл в форматеBuffer
.msg.fileName
(опционально): Имя файла.msg.mimeType
(опционально): MIME-тип файла.
- Выходные данные:
msg.fileId
: ID загруженного файла.msg.webViewLink
: Ссылка для просмотра файла.
Удаление файлов
- Название:
google-drive-delete
- Описание: Удаляет файлы с Google Диска.
- Входные данные:
msg.fileId
: ID файла для удаления.
- Выходные данные:
msg.deletedFileId
: ID удаленного файла.
Примеры
1. Загрузка файла через HTTP POST
Создайте Flow для загрузки файла через HTML-форму:
[
{
"id": "a1",
"type": "http in",
"z": "flow",
"name": "GET /",
"url": "/",
"method": "get",
"upload": false,
"swaggerDoc": "",
"x": 150,
"y": 100,
"wires": [["a2"]]
},
{
"id": "a2",
"type": "template",
"z": "flow",
"name": "HTML Form",
"field": "payload",
"fieldType": "msg",
"format": "handlebars",
"syntax": "mustache",
"template": "<form id=\"uploadForm\" enctype=\"multipart/form-data\" method=\"POST\" action=\"/upload\">\n <label for=\"file\">Выберите файл:</label>\n <input type=\"file\" id=\"file\" name=\"file\" accept=\"image/*\" required>\n <br><br>\n <button type=\"submit\">Загрузить</button>\n</form>",
"output": "str",
"x": 350,
"y": 100,
"wires": [["a3"]]
},
{
"id": "a3",
"type": "http response",
"z": "flow",
"name": "",
"statusCode": "",
"headers": {},
"x": 550,
"y": 100,
"wires": []
},
{
"id": "b1",
"type": "http in",
"z": "flow",
"name": "POST /upload",
"url": "/upload",
"method": "post",
"upload": true,
"swaggerDoc": "",
"x": 150,
"y": 200,
"wires": [["b2"]]
},
{
"id": "b2",
"type": "function",
"z": "flow",
"name": "Process File",
"func": "const file = msg.req.files.file;\nmsg.payload = Buffer.from(file.data);\nmsg.fileName = file.name;\nmsg.mimeType = file.type;\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 350,
"y": 200,
"wires": [["b3"]]
},
{
"id": "b3",
"type": "google-drive-upload",
"z": "flow",
"name": "Upload to Google Drive",
"googleDriveConfig": "config-node-id", // Укажите ID конфигурационного узла
"fileName": "",
"x": 550,
"y": 200,
"wires": [["b4"]]
},
{
"id": "b4",
"type": "http response",
"z": "flow",
"name": "",
"statusCode": "200",
"headers": {},
"x": 750,
"y": 200,
"wires": []
}
]
2. Удаление файла
Создайте Flow для удаления файла по его ID:
[
{
"id": "c1",
"type": "inject",
"z": "flow",
"name": "Delete File",
"props": [
{ "p": "fileId", "v": "1abc123...", "vt": "str" }
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"x": 150,
"y": 300,
"wires": [["c2"]]
},
{
"id": "c2",
"type": "google-drive-delete",
"z": "flow",
"name": "Delete from Google Drive",
"googleDriveConfig": "config-node-id", // Укажите ID конфигурационного узла
"fileId": "",
"x": 350,
"y": 300,
"wires": [["c3"]]
},
{
"id": "c3",
"type": "debug",
"z": "flow",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 550,
"y": 300,
"wires": []
}
]
Лицензия
Этот проект распространяется под лицензией MIT. Подробности см. в файле LICENSE.
Поддержка
Если у вас возникли вопросы или проблемы, создайте issue в репозитории или свяжитесь с автором.
Автор: Borovlioff GitHub: https://github.com/borovlioff/node-red-google-drive-storage