
پلتفرم NodeJS
(NodeJS Platform)اتصال به ذخیرهسازی ابری
بدون شک اتصال برنامه به یک ذخیرهسازی ابری مطمئن برای نگهداری و ارائه فایلهای استاتیک وبسایت یا دادههای آپلود شده توسط کاربران، باعث اطمینان خاطر صاحبان کسب و کار و بهبود عملکرد برنامه میشود.
فهرست عناوین:
- نصب AWS SDK
- تنظیم کلیدها
- آپلود فایل
- دریافت فایل
- دریافت لینک دانلود فایل
- دریافت لیست فایل های آپلود شده
- حذف فایل
- دریافت لیست باکت ها
- آپلود فایل توسط multer-s3
نصب AWS SDK
از آنجا که ذخیرهسازی ابری لیارا یک سرویس Object storage سازگار با پروتکل S3 است، شما میتوانید با استفاده از AWS SDK، در زبانها و فریمورکهای مختلفی این فضای ذخیرهسازی را مدیریت کنید. حال برای اتصال به ذخیرهسازی ابری در NodeJS باید با اجرای دستور زیر، پکیج aws-sdk را نصب کنید.
npm i aws-sdk
تنظیم کلیدها
در مرحلهی بعد، بهمنظور امنیت و کنترل راحتتر مقادیر باید مشخصات فضای ذخیرهسازی ابری اعم از کلیدها و آدرس اتصال به این سرویس را در بخش متغیرهای برنامه تنظیم کنید.
LIARA_ENDPOINT=<Liara Bucket Endpoint>
LIARA_BUCKET_NAME=<Bucket Name>
LIARA_ACCESS_KEY=<Access Key>
LIARA_SECRET_KEY=<Secret Key>
آپلود فایل با AWS SDK
نمونه کد جهت آپلود فایل:
const params = {
Body: '<Binary String>',
Bucket: process.env(LIARA_BUCKET_NAME),
Key: "objectkey"
};
// async/await
try {
await client.putObject(params).promise();
} catch (error) {
console.log(error);
}
// callback
client.putObject(params, (err, data) => {
if (err) console.error(err, err.stack);
else console.log(data);
});
دریافت فایل با AWS SDK
نمونه کد جهت دریافت فایل:
const params = {
Bucket: process.env(LIARA_BUCKET_NAME),
Key: "objectkey"
};
// async/await
try {
const object = await client.getObject(params).promise();
console.log(object)
} catch (error) {
console.log(error);
}
// callback
client.getObject(params, (err, data) => {
if (err) console.error(err, err.stack);
else console.log(data);
});
دریافت لینک دانلود فایل توسط AWS SDK
نمونه کد جهت دریافت لینک دانلود فایل:
const params = {
Bucket: process.env(LIARA_BUCKET_NAME),
Key: "objectkey"
Expires: 60, // expires in 60 seconds
};
// async/await
try {
const object = await client.getSignedUrlPromise('getObject', params);
console.log(object);
} catch (error) {
console.log(error);
}
// callback
client.getSignedUrl('getObject', params, (err, data) => {
if (err) console.error(err, err.stack);
else console.log(data);
});
دریافت لیست فایلهای آپلود شده توسط AWS SDK
نمونه کد جهت دریافت لیست فایلهای آپلود شده:
const params = {
Bucket: process.env(LIARA_BUCKET_NAME),
};
// async/await
try {
const objects = await client.listObjectsV2(params).promise();
console.log(objects);
} catch (error) {
console.log(error);
}
// callback
client.listObjectsV2(params, (err, data) => {
if (err) console.error(err, err.stack);
else console.log(data);
});
حذف فایل توسط AWS SDK
نمونه کد جهت حذف فایل:
const params = {
Bucket: process.env(LIARA_BUCKET_NAME),
Key: 'objectKey',
};
// async/await
try {
await client.deleteObject(params).promise();
} catch (error) {
console.log(error);
}
// callback
client.deleteObject(params, (err, data) => {
if (err) console.error(err, err.stack);
else console.log(data);
});
دریافت لیست باکت ها توسط AWS SDK
نمونه کد برای دریافت لیست باکتهای ایجاد شده:
const AWS = require('aws-sdk');
const config = {
endpoint: process.env(LIARA_ENDPOINT),
accessKeyId: process.env(LIARA_ACCESS_KEY),
secretAccessKey: process.env(LIARA_SECRET_KEY),
region: "default",
}
const client = new AWS.S3(config);
client.listBuckets(
(err, data) => {
if (err) console.error(err, err.stack);
else console.log(data);
}
);
آپلود فایل از طریق multer-s3
نمونه کد برای آپلود فایل از طریق multer-s3:
import AWS from 'aws-sdk';
import multer from 'multer';
import express from 'express';
import multerS3 from 'multer-s3';
const config = {
endpoint: process.env(LIARA_ENDPOINT),
accessKeyId: process.env(LIARA_ACCESS_KEY),
secretAccessKey: process.env(LIARA_SECRET_KEY),
region: "default",
};
const app = express();
const s3 = new AWS.S3(config);
const upload = multer({
storage: multerS3({
s3,
bucket: process.env(LIARA_BUCKET_NAME),
key: function (req, file, cb) {
console.log(file);
cb(null, file.originalname);
},
}),
});
// route
app.post('/upload', upload.single('objectKey'), function (req, res) {
console.log(req.file);
return res.send({
status: 'success',
message: 'file uploaded!',
url: {
size: req.file.size,
url: req.file.location,
name: req.file.key,
type: req.file.mimetype,
},
});
});
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});
شما میتوانید برای کسب اطلاعات بیشتر، مثالها و مستندات این پکیج را مطالعه کنید.
متوجه شدم، برو گام بعدی!