Ninja Learn | نینجا لرن
1.26K subscribers
105 photos
41 videos
12 files
326 links
یادگیری برنامه نویسی به سبک نینجا 🥷
اینجا چیزایی یاد میگیری که فقط نینجاهای وب‌ بلدن 🤫

📄 Send me post: https://t.iss.one/NoronChat_bot?start=sec-fdggghgebe

👥 ɢʀᴏᴜᴘ: https://t.iss.one/+td1EcO_YfSphNTlk
Download Telegram
💎 آپلود فایل توی باکت S3 در node.js 💎

امروز میخوام در مورد یکی از موضوعات پرکاربرد و جذاب در دنیای Node.js صحبت کنم: آپلود فایل با استفاده از باکت S3! 🎉

📦 چی هست این S3 و چرا باید ازش استفاده کنیم؟
باید بدونید S3 (Simple Storage Service) یکی از سرویس‌های معروف و محبوب آمازون وب سرویس (AWS) هست که به شما اجازه میده فایل‌هاتون رو روی فضای ابری ذخیره کنید. 🤓 این سرویس به خاطر قابلیت‌های زیادی مثل مقیاس‌پذیری بالا، امنیت و سرعت زیادش خیلی طرفدار داره.

فرض کن یه پروژه داری که توش کلی فایل (مثل عکس، ویدیو یا حتی فایل‌های بزرگ) باید ذخیره بشه. به جای اینکه این فایل‌ها رو روی سرور خودت نگه داری و مدام نگران فضای ذخیره‌سازی باشی، می‌تونی از S3 استفاده کنی تا همه چیز روی فضای ابری مدیریت بشه. 🚀

🎯 حالا چطور می‌تونیم با Node.js فایل آپلود کنیم؟
بریم سراغ اصل مطلب! 😊 برای آپلود فایل در S3 با Node.js چند تا مرحله باید انجام بدیم:

📥 نصب پکیج‌های مورد نیاز:
اول از همه باید پکیج‌های aws-sdk و multer رو نصب کنیم. aws-sdk کتابخانه‌ای هست که AWS رو به Node.js متصل می‌کنه و multer هم برای مدیریت فایل‌های آپلودی استفاده می‌شه.

npm install aws-sdk multer

کانفیگ AWS:
حالا باید کلاینت AWS رو کانفیگ کنیم. برای این کار نیاز به accessKeyId و secretAccessKey دارید که باید از کنسول AWS بگیرید.

const AWS = require('aws-sdk');

AWS.config.update({
    accessKeyId: 'YOUR_ACCESS_KEY_ID',
    secretAccessKey: 'YOUR_SECRET_ACCESS_KEY',
    region: 'YOUR_REGION'
});

const s3 = new AWS.S3();

🔧 ساختن تابع آپلود:
حالا بیایم یه تابع ساده برای آپلود فایل بسازیم. این تابع فایل رو از کلاینت میگیره و به S3 آپلود می‌کنه:

const uploadFile = (file) => {
    const params = {
        Bucket: 'YOUR_BUCKET_NAME',
        Key: file.originalname,
        Body: file.buffer
    };

    return s3.upload(params).promise();
};

🧾 مدیریت فایل‌های آپلودی:
از multer برای گرفتن فایل‌ها از فرم استفاده می‌کنیم. به این شکل که فایل‌ها به عنوان buffer به تابع uploadFile پاس داده می‌شن:

const multer = require('multer');
const upload = multer();

app.post('/upload', upload.single('file'), async (req, res) => {
    try {
        const result = await uploadFile(req.file);
        res.send(result);
    } catch (error) {
        res.status(500).send(error);
    }
});

توی این کد، وقتی کاربر فایلی رو آپلود می‌کنه، ما از طریق multer اون فایل رو می‌گیریم و با استفاده از aws-sdk اونو به S3 ارسال می‌کنیم.

💡 نکات اضافی و پیشنهادها

🛡 ایمن‌سازی: حواستون باشه که accessKeyId و secretAccessKey رو توی کد قرار ندید. به جای اون‌ها از متغیرهای محیطی (environment variables) استفاده کنید.

📟 استفاده از presigned URLs: اگه می‌خواید کاربر مستقیماً از کلاینت خودش فایل رو آپلود کنه، می‌تونید از presigned URLs استفاده کنید که امنیت و عملکرد بهتری داره.

🔬 مانیتورینگ و مدیریت فایل‌ها: با استفاده از امکاناتی مثل CloudWatch یا S3 Events می‌تونید عملیات‌های مختلف روی فایل‌ها رو مانیتور کنید.
امیدوارم این آموزش به دردتون بخوره و بتونید به راحتی فایل‌هاتون رو با Node.js توی S3 آپلود کنید.


امید وارم براتون مفید بوده باشه :) ❤️

#node.js #s3 #aws #clound_storage

@ninja_learn_ir
6🥰1
💎 معرفی SSE در Node.js 💎

مروز می‌خوایم درباره SSE یا Server-Sent Events توی Node.js صحبت کنیم.

حالا SSE چیه؟ 🤔
خب SSE یکی از تکنیک‌های وب هست که به سرور اجازه میده به طور یکطرفه اطلاعات رو به کلاینت بفرسته. یعنی سرور می‌تونه داده‌ها رو به مرور زمان به کلاینت بفرسته بدون اینکه کلاینت درخواست خاصی بده.

چرا از SSE استفاده کنیم؟ 💡
1⃣ ساده و راحت:
برای پیاده‌سازی SSE به کد کمتری نسبت به WebSocket نیاز داریم و ساده‌تره.

2⃣ بروزرسانی‌های زنده:
می‌تونی اطلاعات مثل نوتیفیکیشن‌ها یا اخبار رو به صورت زنده به کاربران ارسال کنی.

3⃣ پشتیبانی از مرورگرها:
اکثر مرورگرهای مدرن از SSE پشتیبانی می‌کنند.

چطور از SSE در Node.js استفاده کنیم؟ 🚀
برای استفاده از SSE توی Node.js می‌تونی به راحتی یه سرور ساده راه بندازی. مثلاً:

const express = require('express')
const app = express()

app.get('/events', (req, res) => {
res.setHeader('Content-Type', 'text/event-stream')
res.setHeader('Cache-Control', 'no-cache')
res.setHeader('Connection', 'keep-alive')

setInterval(() => {
const data = new Date().toLocaleTimeString()
res.write(`data: ${data}\n\n`)
}, 1000)
})

app.listen(3000, () => {
console.log('Server running on https://localhost:3000')
})


توضیحات کد 📝
- با استفاده از Express یه روت /events تعریف کردیم که داده‌ها رو به صورت زنده ارسال می‌کنه.
- سرور با استفاده از setInterval هر یک ثانیه زمان فعلی رو به کلاینت ارسال می‌کنه.

سمت کلاینت 🖥️
برای دریافت این داده‌ها در کلاینت می‌تونی از JavaScript استفاده کنی:

const eventSource = new EventSource('/events')

eventSource.onmessage = (event) => {
console.log('New message:', event.data)
}

جمع‌بندی 🎯
فهمیدیم SSE یکی از روش‌های عالی برای ارسال داده‌ها به صورت زنده از سرور به کلاینت در Node.js هست. با استفاده از این تکنیک می‌تونی تجربه کاربری بهتری رو برای اپلیکیشن‌هات ایجاد کنی.

امید وارم مفید بوده باشه :)

#sse #js #node.js


@ninja_learn_ir
7