ساخت سیستم مدیریت فایل‌ها با پایتون و Flask

ساخت سیستم مدیریت فایل‌ها با پایتون و Flask

در این مقاله، به بررسی نحوه ساخت یک سیستم مدیریت فایل ساده با استفاده از زبان برنامه‌نویسی پایتون و فریم‌ورک وب Flask خواهیم پرداخت. این سیستم به کاربران امکان می‌دهد تا فایل‌ها را آپلود، دانلود، حذف و لیست کنند. هدف از این آموزش، آشنایی با مفاهیم اساسی کار با فایل‌ها در پایتون و نحوه پیاده‌سازی آن‌ها در یک برنامه وب است. این آموزش در دسته ‘توسعه وب با پایتون’ قرار می‌گیرد و برای افرادی که با مفاهیم اولیه پایتون و Flask آشنا هستند، مناسب است.

پیش‌نیازها

قبل از شروع، اطمینان حاصل کنید که موارد زیر را دارید:

  • پایتون (نسخه 3.6 یا بالاتر)
  • Flask (نصب با استفاده از pip: pip install Flask)
  • یک ویرایشگر کد (مانند VS Code، PyCharm یا Sublime Text)

مرحله اول: ساختار پروژه

ابتدا یک ساختار پروژه برای سیستم مدیریت فایل خود ایجاد کنید. یک پوشه اصلی ایجاد کنید (مثلاً ‘file_manager’) و در داخل آن، فایل‌های زیر را بسازید:

  • app.py: فایل اصلی برنامه Flask
  • templates/: پوشه‌ای برای فایل‌های 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 را یاد گرفتیم. این سیستم به شما امکان می‌دهد تا فایل‌ها را آپلود، دانلود، حذف و لیست کنید. با استفاده از این آموزش، می‌توانید اصول کار با فایل‌ها در پایتون و نحوه پیاده‌سازی آن‌ها در یک برنامه وب را یاد بگیرید. همچنین، این پایه می‌تواند برای ساخت سیستم‌های پیچیده‌تر مدیریت فایل با ویژگی‌های بیشتر مورد استفاده قرار گیرد.

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *