Перейти к содержимому
В личный кабинет

Сервер для загрузки файлов

Это приложение на NodeJS позволяет загружать файлы в S3.

Как работает приложение

Сервер принимает файлы по пути /upload, создает FormData с полученным файлом с помощью библиотеки multer и загружает файл в Default Uploader, так же в ответ сервер отдает информацию по загруженным файлам от Default Uploader.

Это классический пример для сценария, когда вашим пользователям нужно загрузить фото, видео или документ.

Реализация сервера

Создайте приложение

create nodejs app
mkdir myuploaderserver && cd myuploaderserver && npm init -y

Создайте index.js файл, у вас должны быть такая файловая структура.

  • Директорияmyuploaderserver/
    • package.json
    • index.js

Скопируйте код ниже в index.js

express server
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}`);
});

Установите зависимости

dependencies
npm i axios express multer form-data

Запустите сервер

express server
node index.js

Тестирование

С помощью Postman отправьте запрос multipart/form-data на http://localhost:3000/uplad с прикрепленным файлом. Не забудьте в коде вставить ваш SECRET_CLIENT_TOKEN.

Или с CURL

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"'