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ă de10 megabytes
.
Încărcare Singulară vs. Încărcare Multiplică:
- Încărcare Singulară: Când utilizați
.single("file")
, fișierul încărcat este accesibil prinreq.file
. - Încărcare Multiplică: Când utilizați
.array("files")
, fișierele încărcate sunt accesibile prinreq.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!