ساخت سیستم مدیریت فایلها با پایتون و Flask
در این مقاله، به بررسی نحوه ساخت یک سیستم مدیریت فایل ساده با استفاده از زبان برنامهنویسی پایتون و فریمورک وب Flask خواهیم پرداخت. این سیستم به کاربران امکان میدهد تا فایلها را آپلود، دانلود، حذف و لیست کنند. هدف از این آموزش، آشنایی با مفاهیم اساسی کار با فایلها در پایتون و نحوه پیادهسازی آنها در یک برنامه وب است. این آموزش در دسته ‘توسعه وب با پایتون’ قرار میگیرد و برای افرادی که با مفاهیم اولیه پایتون و Flask آشنا هستند، مناسب است.
پیشنیازها
قبل از شروع، اطمینان حاصل کنید که موارد زیر را دارید:
- پایتون (نسخه 3.6 یا بالاتر)
- Flask (نصب با استفاده از pip:
pip install Flask) - یک ویرایشگر کد (مانند VS Code، PyCharm یا Sublime Text)
مرحله اول: ساختار پروژه
ابتدا یک ساختار پروژه برای سیستم مدیریت فایل خود ایجاد کنید. یک پوشه اصلی ایجاد کنید (مثلاً ‘file_manager’) و در داخل آن، فایلهای زیر را بسازید:
app.py: فایل اصلی برنامه Flasktemplates/: پوشهای برای فایلهای HTML (قالبها)index.html: صفحه اصلی برای لیست کردن فایلهاupload.html: صفحه برای آپلود فایلuploads/: پوشهای برای ذخیره فایلهای آپلود شده
مرحله دوم: کد برنامه Flask (app.py)
کد زیر را در فایل app.py قرار دهید:
from flask import Flask, render_template, request, redirect, url_for
import os
app = Flask(__name__)
UPLOAD_FOLDER = 'uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
@app.route('/')
def index():
files = os.listdir(app.config['UPLOAD_FOLDER'])
return render_template('index.html', files=files)
@app.route('/upload', methods=['GET', 'POST'])
def upload():
if request.method == 'POST':
file = request.files['file']
if file:
filename = file.filename
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
return redirect(url_for('index'))
return render_template('upload.html')
@app.route('/download/')
def download(filename):
path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
return send_from_directory(app.config['UPLOAD_FOLDER'], filename, as_attachment=True)
@app.route('/delete/')
def delete(filename):
path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
if os.path.exists(path):
os.remove(path)
return redirect(url_for('index'))
from flask import send_from_directory
if __name__ == '__main__':
if not os.path.exists(UPLOAD_FOLDER):
os.makedirs(UPLOAD_FOLDER)
app.run(debug=True)
در این کد:
UPLOAD_FOLDER: مسیری که فایلها در آن ذخیره میشوند.index(): فایلهای موجود در پوشهUPLOAD_FOLDERرا لیست میکند و آنها را در قالبindex.htmlنمایش میدهد.upload(): فرم آپلود فایل را نمایش میدهد و فایل آپلود شده را در پوشهUPLOAD_FOLDERذخیره میکند.download(filename): فایل با نام مشخص شده را دانلود میکند.delete(filename): فایل با نام مشخص شده را حذف میکند.
مرحله سوم: ایجاد قالبها (HTML)
حالا باید فایلهای HTML را ایجاد کنید.
index.html
کد زیر را در فایل templates/index.html قرار دهید:
<!DOCTYPE html>
<html>
<head>
<title>لیست فایلها</title>
</head>
<body>
<h1>لیست فایلها</h1>
<a href="{{ url_for('upload') }}">آپلود فایل</a><br>
<ul>
{% for file in files %}
<li>
<a href="{{ url_for('download', filename=file) }}">دانلود {{ file }}</a>
<a href="{{ url_for('delete', filename=file) }}">حذف {{ file }}</a>
</li>
{% endfor %}
</ul>
</body>
</html>
upload.html
کد زیر را در فایل templates/upload.html قرار دهید:
<!DOCTYPE html>
<html>
<head>
<title>آپلود فایل</title>
</head>
<body>
<h1>آپلود فایل</h1>
<form method="POST" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="آپلود">
</form>
<a href="{{ url_for('index') }}">بازگشت به لیست فایلها</a>
</body>
</html>
مرحله چهارم: اجرای برنامه
در ترمینال، به پوشه اصلی پروژه بروید و دستور زیر را اجرا کنید:
python app.py
حالا میتوانید به آدرس http://127.0.0.1:5000/ در مرورگر خود بروید و سیستم مدیریت فایل را مشاهده کنید.
توضیحات تکمیلی
- امنیت: این سیستم مدیریت فایل بسیار ساده است و فاقد ویژگیهای امنیتی پیشرفته است. در یک برنامه واقعی، باید اقدامات امنیتی مناسبی را برای جلوگیری از دسترسی غیرمجاز و حملات احتمالی انجام دهید.
- مدیریت خطا: کد ارائه شده فاقد مدیریت خطا است. در یک برنامه واقعی، باید خطاها را به درستی مدیریت کنید و پیامهای مناسبی را به کاربر نمایش دهید.
- مقیاسپذیری: این سیستم برای تعداد کمی فایل مناسب است. برای مدیریت تعداد زیادی فایل، باید از پایگاه داده و تکنیکهای بهینهسازی استفاده کنید.
- رابط کاربری: رابط کاربری این سیستم بسیار ساده است. میتوانید از CSS و JavaScript برای بهبود ظاهر و کارایی آن استفاده کنید.
نتیجهگیری
در این مقاله، نحوه ساخت یک سیستم مدیریت فایل ساده با استفاده از پایتون و Flask را یاد گرفتیم. این سیستم به شما امکان میدهد تا فایلها را آپلود، دانلود، حذف و لیست کنید. با استفاده از این آموزش، میتوانید اصول کار با فایلها در پایتون و نحوه پیادهسازی آنها در یک برنامه وب را یاد بگیرید. همچنین، این پایه میتواند برای ساخت سیستمهای پیچیدهتر مدیریت فایل با ویژگیهای بیشتر مورد استفاده قرار گیرد.

بدون دیدگاه