(+40) 774 638 104
office@devcodes.ro

© 2024. DevCodes SRL.
Toate drepturile rezervate. CUI 47866500, NR. INREG J40/5648/2023

Lansarea în versiune beta a pachetului DevCodes-SDK Upload Agent 🚀

Iulian Dragomirescu

Iulian Dragomirescu

· 3 minute de citit
Lansarea în versiune beta a pachetului DevCodes-SDK Upload Agent 🚀

Suntem încântați să anunțăm lansarea în versiune beta a noului nostru pachet NPM, devcodes-sdk/server-upload creat pentru a simplifica fluxurile de lucru pe partea de backend, în special în gestionarea încărcărilor de fișiere către Amazon S3. Acest pachet oferă o soluție completă pentru gestionarea mai multor clienți S3, optimizarea imaginilor și multe altele.

Caracteristici Cheie

  • Multiple S3 Clients: Gestionați fără efort diferite configurații și bucket-uri S3.
  • Optimizarea Imaginilor: Optimizați automat imaginile înainte de încărcare.
  • Încărcarea Fișierelor Publice/Private: Gestionați fișierele cu diferite niveluri de acces.
  • URL-uri Pre-Semnate: Generați URL-uri securizate și pre-semnate pentru accesarea fișierelor.
  • Ștergerea Fișierelor: Simplificați procesul de ștergere a fișierelor din S3.

Instalare

Pentru a începe să utilizați devcodes-sdk/server-upload, rulați următoarea comandă:

1npm install @devcodes-sdk/server-upload

Configurare

Inițializare

Mai întâi, importați și inițializați UploadAgent cu opțiunile necesare:

1import UploadAgent from "@devcodes-sdk/server-upload";
2
3const uploadAgent = new UploadAgent({
4  s3: [
5    {
6      bucketName: "your-bucket-name",
7      accessKey: "",
8      bucketRegion: "",
9      secretKey: "",
10      isPrivateAccess: true,
11    },
12  ],
13}).create();
14
15export const {
16  uploadMiddleware,
17  uploadFilesFromRequest,
18  uploadFileToS3,
19  generatePreSignedUrl,
20  deleteFileFromS3,
21} = uploadAgent;

Middleware-ul Multer - (uploadMiddleware)

Acest middleware gestionează încărcarea fișierelor cu următoarele caracteristici:

Parametri:

  • allowedMimes (Array): Specifică tipurile MIME permise pentru fișierele încărcate. De exemplu, ["image/png"] permite doar imagini PNG.
  • maxSize (Number): Definește dimensiunea maximă permisă a fișierului în bytes. De exemplu, 10 * 1024 * 1024 setează o limită de 10 megabytes.

Încărcare Singulară vs. Încărcare Multiplică:

  • Încărcare Singulară: Când utilizați .single("file"), fișierul încărcat este accesibil prin req.file.
  • Încărcare Multiplică: Când utilizați .array("files"), fișierele încărcate sunt accesibile prin req.files.

Middleware-ul returnează fișierul(e) încărcat(e) ca buffer, în funcție de dacă se încarcă un singur fișier sau mai multe.

1app.post(
2  "/upload",
3  uploadMiddleware({
4    allowedMimes: ["image/png"],
5    maxSize: 10 * 1024 * 1024,
6  }).single("avatar"),
7  async (req, res) => {
8    try {
9      const file = req.file; // pentru .single("")
10      const files = req.files; // pentru .array("")
11    } catch (error) {
12      res.status(400).json({ message: error });
13    }
14  }
15);

Încărcarea Fișierelor din Request- (uploadFilesFromRequest)

Procesează fișierele încărcate printr-o cerere HTTP și le încarcă în S3.

  • Necesar: uploadMiddleware

Parametri:

  • req: (Express Request): Obiectul cererii HTTP.
  • folder: (String): Calea folderului S3. // Notă: Trebuie să înceapă cu '/' și să nu se termine cu '/'
  • isPrivateAccess: (Boolean): Dacă fișierul trebuie să fie accesibil privat.
  • bucketName: (String): Numele bucket-ului S3.
  • imageOptimization: (Boolean): Dacă imaginile trebuie optimizate.
1app.post('/upload', uploadMiddleware.single('avatar'), async (req, res) => {
2  try {
3    const result = await uploadFilesFromRequest({
4      req,
5      folder: '/uploads',
6      isPrivateAccess: true,
7      bucketName: 'your-bucket-name',
8      imageOptimization: true
9    });
10    res.json(result);
11  } catch (error) {
12    res.status(500).send(error.message);
13  }
14});

Încărcarea Fișierului către S3 - (uploadFileToS3)

Încarcă un fișier direct în S3.

Parametri:

  • file: (Buffer): Buffer-ul fișierului.
  • folder: (String): Calea folderului S3. // Notă: Trebuie să înceapă cu '/' și să nu se termine cu '/'
  • isPrivateAccess: (Boolean): Dacă fișierul trebuie să fie accesibil privat.
  • bucketName: (String): Numele bucket-ului S3.
  • imageOptimization: (Boolean): Dacă imaginile trebuie optimizate.
1uploadFileToS3({
2  file: fileBuffer,
3  folder: '/uploads',
4  isPrivateAccess: true,
5  bucketName: 'your-bucket-name',
6  imageOptimization: false
7}).then(result => {
8  console.log(result);
9}).catch(error => {
10  console.error(error);
11});

Generarea PreSignedUrl - (generatePreSignedUrl)

Generează un URL pre-semnat pentru accesarea unui fișier în S3.

Parametri:

  • key: (String): Cheia fișierului în S3.
  • bucketName: (String): Numele bucket-ului S3.
  • expiresIn: (Number): Timpul de expirare al URL-ului în secunde.
1generatePreSignedUrl({
2  key: '/uploads/b5c9fecc-1dd0-457f-b55d-dba223050b27',
3  bucketName: 'your-bucket-name',
4  expiresIn: 60 // URL valabil pentru 60 de secunde
5}).then(url => {
6  console.log(url);
7}).catch(error => {
8  console.error(error);
9});

Ștergerea Fișierului din S3 - (deleteFileFromS3)

Șterge un fișier din S3.

Parametri:

  • key: (String): Cheia fișierului în S3.
  • bucketName: (String): Numele bucket-ului S3.
1deleteFileFromS3({
2  key: '/uploads/b5c9fecc-1dd0-457f-b55d-dba223050b27',
3  bucketName: 'your-bucket-name'
4}).then(result => {
5  console.log(result);
6}).catch(error => {
7  console.error(error);
8});

Contribuiți la Îmbunătățirea Pachetului

Fiind o versiune beta, devcodes-sdk/server-upload` este în continuă dezvoltare și testare. Orice modificare, sugestie sau îmbunătățire poate fi făcută printr-un pull request pe repository-ul nostru GitHub. Ne dorim să colaborăm cu voi pentru a face acest pachet cât mai robust și eficient.

Începeți să utilizați devcodes-sdk/server-upload astăzi și optimizați-vă fluxul de lucru backend cu încărcarea eficientă a fișierelor către Amazon S3!

Logo DevCodes

DevCodes este o companie de dezvoltare software cu sediul în București, România. Suntem o echipă tânără, cu experiență în domeniul IT, care oferă servicii de dezvoltare software și consultanță IT.

Contact

Adresa:

Strada Emil Racovita 16A, Bucuresti, Romania

"We are a team of software developers, designers and entrepreneurs."
ANAFANAF

© 2024. DevCodes SRL. Toate drepturile rezervate. CUI 47866500, NR. INREG J40/5648/2023