Сервер для загрузки файлов
Это приложение на NodeJS позволяет загружать файлы в S3.
Как работает приложение
Заголовок раздела «Как работает приложение»Сервер принимает файлы по пути /upload, создает FormData с полученным файлом с помощью библиотеки multer и загружает файл в Default Uploader, так же в ответ сервер отдает информацию по загруженным файлам от Default Uploader.
Это классический пример для сценария, когда вашим пользователям нужно загрузить фото, видео или документ.
Реализация сервера
Заголовок раздела «Реализация сервера»Создайте приложение
mkdir myuploaderserver && cd myuploaderserver && npm init -yСоздайте index.js файл, у вас должны быть такая файловая структура.
Директорияmyuploaderserver/
- package.json
- index.js
Скопируйте код ниже в index.js
const axios = require('axios');const express = require('express');const multer = require('multer');const FormData = require('form-data');
const app = express();const port = 3000;
const url = 'https://api.defaultuploader.com/v1/upload';const token = 'YOUR_SECRET_CLIENT_TOKEN'; // Заменить на ваш токен!
const storage = multer.memoryStorage();const upload = multer({ storage });
app.post('/upload', upload.any('file'), async (req, res) => { try { const form = new FormData(); for (const file of req.files) { form.append('file', file.buffer, { filename: file.originalname, }); }
const response = await axios.post(url, form, { headers: { ...form.getHeaders(), Authorization: `${token}`, }, });
console.log('File uploaded successfully!'); console.log('Response:', response.data);
res.status(200).json({ data: response.data }); } catch (error) { console.error('Error uploading file:', error.message); res.status(500).json({ error: 'File upload failed' }); }});
app.listen(port, () => { console.log(`Server is running on port ${port}`);});Установите зависимости
npm i axios express multer form-dataЗапустите сервер
node index.jsТестирование
Заголовок раздела «Тестирование»С помощью Postman отправьте запрос multipart/form-data на http://localhost:3000/uplad с прикрепленным файлом.
Не забудьте в коде вставить ваш SECRET_CLIENT_TOKEN.
Или с CURL
curl --location 'http://localhost:3000/upload' --header 'Content-Type: image/svg+xml' --header 'Authorization: SECRET_CLIENT_TOKEN' --form 'image=@"/C:/Users/user/Desktop/image.jpg"'