django3.1.4從前端接收檔案(各種格式的檔案)

how_to_deal發表於2020-12-20

Django3.1.4從前端接收檔案

博主有一個介面需求是要從前端接收zip檔案,輸入在後端的資料預處理函式中,其實用接收file的方式接收即可。

views.py檔案

import os

from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.
from upload_file import settings


def form(request):
    return render(request, 'upload_form.html')


def zipFile(request):
    if request.method == 'POST':
        zipFile = request.FILES['zipFile']
        zipFile = os.path.join(settings.MEDIA_ROOT, zipFile.name)
        print(zipFile)
        with open(zipFile, 'wb') as f:
            for zipFile_Part in request.FILES['zipFile'].chunks():
                f.write(zipFile_Part)
        return HttpResponse('上傳成功')
    else:
        return HttpResponse('method 方法 錯誤')

settings.py中
static和它目錄中的media自己建立,博主是建立在專案目錄下

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]

MEDIA_ROOT = os.path.join(BASE_DIR, 'static/media')  # 設定檔案存放路徑

在template中加入一個測試頁面
upload.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/upload/zipFile/" method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="file" name="zipFile">
    <br>
    <input type="submit" value="上傳">
</form>
</body>
</html>

在urls.py中引入

from django.contrib import admin
from django.urls import path

from upload import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('upload/form/', views.form),
    path('upload/zipFile/', views.zipFile)
]

在terminal中輸入

python manage.py runserver

開啟介面,選一個本地的zip檔案,點選上傳
在這裡插入圖片描述
獲得response
在這裡插入圖片描述
在static/media中找看到Data.zip在這裡插入圖片描述
因為是測試一個API建立的專案,我在這裡放一下專案結構,讓和我一樣的小白閱讀沒有障礙。
在這裡插入圖片描述

相關文章