CASTILIDADE EM КРИЛЬ КУРС ERVIR ARQUIVOS PARA O S3 DA Amazon é Algo Fantástico. Armazenar Objetos, AO Invés dum Sistema de Arquivos, Diminui A Copperyidade E TRAZ UMA Eficiência à Esse Tipo de Operação.
UM DOS Flanceas Da Amazon é O Seu Valor. EM Projetos Menores, que não se englishiabiama da Grande Disponibilidade da Plataforma, é Comum Adotar – Pelo Menos Para Hospedar Applação – цифровой океан. Nesse Artigo, Vamos Utilizar UMA “S3 Própria” POR Meio Do Minio Em UMA API Básica Para Загрузить De Arquivos, Feita Com Node.js e JavaScript.
Curty Uma Trilha Sonora? ЕС Fiz Esse Artigo Ouvindo Список воспроизведения Essa Нет Spotify .
Сегундо А Prória Documentação o minio. É UMA Tecnologia de Amarazenamento Baseada Em Objetos, De Alta Performance. ELE E ESCRITO EM GO E TEM UMA API Compatível Com O AWS S3.
Vale destacar a questão da compatibilidade. COMO VEREMOS, É OSSíLEVE ATÉ CONFIGURARAR O CLINGYE DO S3 DA SDK PARA JavaScript de modo que eletize, na verdade, o minio.
Aqui, Suponho que que vovoua UM Projeto Configurado Para Utilizar ES6 Модули – UMA Forma Smple É Por Meio Do Babel. Caso точный, используемый Эсте шаблон Отказ
O PAMEIRO PASSO É КРИАР УМА API PARA QUE TASPAMOS TEATAR, NO FUTURO, FUNCALIADADE. Utilizando Express, Teríamos Algo Assim:
import express from 'express'; import { S3 } from 'aws-sdk'; import cors from 'cors'; import morgan from 'morgan'; const app = express(); app.use(cors()); app.use(morgan('dev')); app.listen(3000, () => console.log('[READY]'));
DEPOIS DISOS, ECRAIO CRAR UMA ROTA QUE TRATE O Загрузить де Arquivos Sideuais. Aqui Faremos Uso Do Multer:
app.route('/upload').post( multer({ storage: multer.memoryStorage() }).single('file'), uploadHandler, );
Загрузить обработчик
É nessa função em utilizamos api da s3:
const uploadHandler = async (req, res) => { try { await s3.putObject({ Bucket: 'tests', Key: req.file.originalname, Body: req.file.buffer, }).promise(); return res .status(201) .send({ message: `File "${req.file.originalname}" uploaded` }); } catch (e) { console.log(e); return res .status(500) .send({ error: e.message }) } }
E Assim Criamos o objeto S3
:
const s3 = new S3({ endpoint: 'http://play.minio.io:9000', accessKeyId: 'Q3AM3UQ867SPQQA43P2F', secretAccessKey: 'zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG', sslEnabled: false, s3ForcePathStyle: true, });
Nesse Caso, как Credenciais São Para o Servidor de Testes Do Minio Отказ
POR Que Não Usar SDK ДО MINIO PARA JS? Diga-Se de Passagem, Por Design, Não Existee Muita Diferença, Mas Aqui Estou Fazendo Isso Para Mastrar Como Adaptar, SEM PARIUTAMEADEE Неньхума Муданча Н. А. Эструтура делает проще, о Серьси Утилизадо. Isso Também É til Para Utilizar Pocotes Como O Multer-S3
Отказ
DESSA FORMA, O Código Complemento Seria O Seguinte:
import express from 'express'; import { S3 } from 'aws-sdk'; import cors from 'cors'; import morgan from 'morgan'; const s3 = new S3({ endpoint: 'http://play.min.io:9000', accessKeyId: 'Q3AM3UQ867SPQQA43P2F', secretAccessKey: 'zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG', sslEnabled: false, s3ForcePathStyle: true, }); const app = express(); app.use(cors()); app.use(morgan('dev')); const uploadHandler = async (req, res) => { try { await s3.putObject({ Bucket: 'tests', Key: req.file.originalname, Body: req.file.buffer, }).promise(); return res .status(201) .send({ message: `File "${req.file.originalname}" uploaded` }); } catch (e) { console.log(e); return res .status(500) .send({ error: e.message }) } } app.route('/upload').post( multer({ storage: multer.memoryStorage() }).single('file'), uploadHandler, ); app.listen(3000, () => console.log('[READY]'));
Caso Vovê Não Точный Utilizar API DA S3, альгумас Alterações Seriam Bearsárias. A PAMEIRA é é prória diftição do objeto “S3”. Poderíamos Substituir Pelo Seguinte:
const minioClient = new Minio.Client({ endPoint: 'play.min.io', port: 9000, useSSL: true, accessKey: 'Q3AM3UQ867SPQQA43P2F', secretKey: 'zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG' });
SEGUNDA SERIA NA UTILIZAçãO DESSE CLINGEE PARA REALIZAR O Загрузить, Doctro Da Função UploadHandler, Para Seguinte Forma:
//... await minioClient.putObject( 'tests', req.file.originalname, req.file.buffer, );
Caso Vovê Execute o Código CriaDo, É Assível Realizar Загрузить de Arquivos Por Meio de Requisições http Para localhost: 3000/загрузка
Утилизандо multipart/form-data
Отказ O Multer FAZ o Trabalho Peasado de modo que temos Total Acesso Ao Arquivo NA Memório (Atravez do Memorystorage).
DITO ISSO, UTILIZAMOS Contudo Contudo a aws da Maneira Contudo a objeto que nos del acesso à abi da s3 é criado com alguns parâmetros – Собретадо О Конечная точка, que Release Url Do Servidor Minio De Intereste. Соблюдайте Que Quase Nenhuma Alteração é MainiaRia, UMA VEZ Que o Minio Foi Estruturado Para Permitir Esse Tipo de Compatibilidade.
- https://min.io/
- https://github.com/minio/minio/issues/2667
- COMO Configurar UM Servidor Minio Na Digital Ocean
Оригинал: “https://dev.to/dotmendes/minio-como-alternativa-ao-s3-em-aplicacoes-node-3g8f”