Python上傳、下載文件

1、創建一個Django應用程式

首先,創建一個新的Django應用程式。執行以下命令:

python manage.py startapp fileupload

2、定義文件模型

fileupload/models.py文件中,定義一個File模型,其中包含FileField字段:

from django.db import models

class File(models.Model):
    file = models.FileField(upload_to='uploads/')
    uploaded_at = models.DateTimeField(auto_now_add=True)

這裡,upload_to參數指定上傳的文件保存在uploads/文件夾中。

3、創建文件上傳和下載視圖

fileupload/views.py文件中,創建兩個視圖,用於處理文件上傳和下載:

from django.shortcuts import render, redirect
from .models import File

def upload_file(request):
    if request.method == 'POST':
        file = request.FILES['file']
        File.objects.create(file=file)
        return redirect('file_download')
    return render(request, 'fileupload/upload.html')

def download_file(request):
    files = File.objects.all()
    return render(request, 'fileupload/download.html', {'files': files})

upload_file視圖處理文件上傳。當HTTP請求的方法為POST時,從請求中獲取文件,並在File模型中創建一個新的記錄。然後,重定向到file_download視圖。否則,返回一個渲染的表單。

download_file視圖檢索所有文件記錄,並在fileupload/download.html模板中顯示它們。

4、設置URL路由

fileupload/urls.py文件中,設置URL路由:

from django.urls import path
from . import views

urlpatterns = [
    path('upload/', views.upload_file, name='file_upload'),
    path('download/', views.download_file, name='file_download'),
]

5、創建模板

fileupload/templates/fileupload文件夾中,創建兩個模板文件upload.htmldownload.html

upload.html模板中包含一個簡單的表單,用於上傳文件:

<form method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="file" name="file" required>
    <button type="submit">Upload</button>
</form>

download.html模板中列出可下載的文件:

{% for file in files %}
    <a href="{{ file.file.url }}" download>{{ file.file.name }}</a>
    <br>
{% endfor %}

6、配置靜態文件設置

在Django的設置文件(settings.py)中,確保以下設置被啟用:

STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

並在urls.py文件中添加以下代碼:

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

7、遷移數據庫

執行以下命令來遷移數據庫:

python manage.py makemigrations
python manage.py migrate

8、測試應用程式

運行Django開發服務器:

python manage.py runserver

現在,您應該能夠在瀏覽器中訪問http://localhost:8000/upload/http://localhost:8000/download/,並完成文件上傳和下載。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值