Перейти к содержимому
Account

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

Это приложение на 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"'