CherryPy দিয়ে স্ট্যাটিক ফাইল (যেমন CSS, JavaScript, ইমেজ) এবং মিডিয়া ফাইল (যেমন ভিডিও, অডিও, ডকুমেন্ট) সহজে সার্ভ করা যায়। CherryPy নিজে স্ট্যাটিক ফাইল হ্যান্ডলিংয়ের জন্য একটি বিল্ট-ইন টুল সরবরাহ করে। আপনি নির্দিষ্ট URL রুটের মাধ্যমে স্ট্যাটিক এবং মিডিয়া ফাইল সার্ভ করতে পারেন।
স্ট্যাটিক ফাইল এবং মিডিয়া ফাইলের মধ্যে পার্থক্য
- স্ট্যাটিক ফাইল (Static Files): সাধারণত ফিক্সড কন্টেন্ট যেমন CSS, JavaScript, এবং ইমেজ ফাইল (PNG, JPG, GIF)।
- মিডিয়া ফাইল (Media Files): ফাইলগুলি ডাইনামিক হতে পারে, যেমন ভিডিও, অডিও, ডকুমেন্ট বা অন্যান্য বড় ফাইল যা ওয়েব ব্রাউজারে পরিবেশন করা হয়।
CherryPy স্ট্যাটিক ফাইলের জন্য বিল্ট-ইন টুল সরবরাহ করে, এবং মিডিয়া ফাইল সার্ভিংয়ের জন্য কিছু কাস্টম কনফিগারেশন বা টুলস ব্যবহার করা যেতে পারে।
Static Files Serve করা
CherryPy তে স্ট্যাটিক ফাইল সার্ভ করতে tools.staticdir টুল ব্যবহার করা হয়। এই টুল দিয়ে আপনি স্ট্যাটিক ফাইলের লোকেশন নির্ধারণ করতে পারেন এবং সেই অনুযায়ী ফাইলগুলো অ্যাক্সেসযোগ্য হবে।
উদাহরণ: স্ট্যাটিক ফাইল সার্ভিং
import cherrypy
class MyApp:
@cherrypy.expose
def index(self):
return "স্বাগতম CherryPy অ্যাপে!"
if __name__ == '__main__':
# স্ট্যাটিক ফাইলের লোকেশন এবং সেকশন কনফিগার করা
config = {
'/static': {
'tools.staticdir.on': True, # স্ট্যাটিক ফাইল সার্ভিং চালু
'tools.staticdir.dir': './static', # স্ট্যাটিক ফাইলের লোকেশন
'tools.staticdir.content_types': {'css': 'text/css', 'js': 'application/javascript'}
}
}
cherrypy.quickstart(MyApp(), '/', config)
এখানে:
/staticরুটের জন্য স্ট্যাটিক ফাইল সার্ভিং কনফিগার করা হয়েছে।tools.staticdir.dirএ স্ট্যাটিক ফাইলের লোকেশন নির্ধারণ করা হয়েছে (যেমন./staticডিরেক্টরি)।
ফাইল কাঠামো:
project/
│
├── app.py
├── static/
│ ├── styles.css
│ ├── script.js
│ └── logo.png
এখন, যদি আপনি ব্রাউজারে http://127.0.0.1:8080/static/styles.css যান, তাহলে আপনি স্ট্যাটিক CSS ফাইলটি দেখতে পাবেন।
Media Files Serve করা
মিডিয়া ফাইল সার্ভ করতে আপনি কাস্টম টুলস ব্যবহার করতে পারেন, যেমন বড় ভিডিও বা অডিও ফাইলের জন্য streaming অথবা নির্দিষ্ট কনফিগারেশন করতে পারেন যাতে মিডিয়া ফাইলগুলো ব্রাউজারে সঠিকভাবে লোড হয়।
উদাহরণ: মিডিয়া ফাইল সার্ভিং
import cherrypy
import os
class MediaServer:
@cherrypy.expose
def index(self):
return "মিডিয়া ফাইল সার্ভিং"
@cherrypy.expose
def serve_video(self, filename):
video_path = os.path.join('media', filename)
# মিডিয়া ফাইলের অবস্থান চেক
if os.path.exists(video_path):
cherrypy.response.headers['Content-Type'] = 'video/mp4'
cherrypy.response.headers['Content-Disposition'] = f'attachment; filename={filename}'
with open(video_path, 'rb') as video:
return video.read()
else:
return "ফাইলটি পাওয়া যায়নি"
if __name__ == '__main__':
# মিডিয়া ফাইল সার্ভিং কনফিগারেশন
cherrypy.quickstart(MediaServer())
এখানে:
serve_videoমেথডটি ভিডিও ফাইলের জন্য। এটি মিডিয়া ফাইলের লোকেশন থেকে ভিডিও ফাইলের কন্টেন্ট পাঠায়।Content-Typeহেডারটি ব্যবহার করা হয়েছে ভিডিও ফাইলের MIME টাইপ নির্ধারণ করার জন্য, যেমনvideo/mp4।
ফাইল কাঠামো:
project/
│
├── app.py
├── media/
│ ├── video.mp4
│ └── audio.mp3
এখন, আপনি ব্রাউজারে http://127.0.0.1:8080/serve_video/video.mp4 দিয়ে ভিডিওটি দেখতে বা ডাউনলোড করতে পারবেন।
স্ট্যাটিক ফাইল এবং মিডিয়া ফাইল সার্ভিং কনফিগারেশন
CherryPy তে স্ট্যাটিক এবং মিডিয়া ফাইলের জন্য কনফিগারেশন একসাথে ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, আপনি স্ট্যাটিক ফাইল সার্ভিং এবং মিডিয়া ফাইল সার্ভিং একসাথে কনফিগার করতে পারেন:
import cherrypy
import os
class MyApp:
@cherrypy.expose
def index(self):
return "স্বাগতম CherryPy অ্যাপে!"
@cherrypy.expose
def serve_video(self, filename):
video_path = os.path.join('media', filename)
if os.path.exists(video_path):
cherrypy.response.headers['Content-Type'] = 'video/mp4'
cherrypy.response.headers['Content-Disposition'] = f'attachment; filename={filename}'
with open(video_path, 'rb') as video:
return video.read()
else:
return "ফাইলটি পাওয়া যায়নি"
if __name__ == '__main__':
config = {
'/static': {
'tools.staticdir.on': True,
'tools.staticdir.dir': './static',
'tools.staticdir.content_types': {'css': 'text/css', 'js': 'application/javascript'}
},
'/media': {
'tools.staticdir.on': True,
'tools.staticdir.dir': './media',
'tools.staticdir.content_types': {'mp4': 'video/mp4', 'mp3': 'audio/mp3'}
}
}
cherrypy.quickstart(MyApp(), '/', config)
এখানে:
/staticরুটের জন্য স্ট্যাটিক ফাইল সার্ভিং কনফিগার করা হয়েছে।/mediaরুটের জন্য মিডিয়া ফাইল সার্ভিং কনফিগার করা হয়েছে।
এটি স্ট্যাটিক এবং মিডিয়া ফাইল উভয়ই সার্ভ করতে সক্ষম হবে।
CherryPy দিয়ে স্ট্যাটিক এবং মিডিয়া ফাইল সার্ভিং করা সহজ। CherryPy এর tools.staticdir টুল ব্যবহার করে স্ট্যাটিক ফাইল এবং কাস্টম কনফিগারেশন ব্যবহার করে মিডিয়া ফাইল সার্ভ করা যায়। আপনি যেকোনো ধরনের ফাইল সার্ভ করতে CherryPy ব্যবহার করতে পারেন, যা আপনাকে একটি পূর্ণাঙ্গ ওয়েব অ্যাপ্লিকেশন তৈরিতে সহায়তা করবে।
Read more