溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Flask與Django文件上傳處理

發(fā)布時(shí)間:2024-11-14 16:36:00 來源:億速云 閱讀:78 作者:小樊 欄目:編程語言

Flask和Django都是Python Web框架,它們都支持文件上傳處理。這里分別為你介紹這兩個(gè)框架的文件上傳處理方法。

  1. Flask文件上傳處理:

在Flask中,你可以使用request.files對象來處理上傳的文件。以下是一個(gè)簡單的Flask文件上傳示例:

from flask import Flask, request
from werkzeug.utils import secure_filename
import os

app = Flask(__name__)
UPLOAD_FOLDER = 'path/to/upload/folder'
ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg'}

app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

def allowed_file(filename):
    return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS

@app.route('/upload', methods=['POST'])
def upload_file():
    if 'file' not in request.files:
        return 'No file part', 400
    file = request.files['file']
    if file.filename == '':
        return 'No selected file', 400
    if file and allowed_file(file.filename):
        filename = secure_filename(file.filename)
        file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
        return 'File uploaded and saved.', 200
    else:
        return 'Invalid file type.', 400

if __name__ == '__main__':
    app.run()

在這個(gè)示例中,我們首先定義了一個(gè)upload_file視圖函數(shù),它處理POST請求中的文件上傳。我們使用request.files對象檢查請求中是否包含文件,然后檢查文件名是否為空。如果文件存在且類型允許,我們將其保存到指定的上傳文件夾中。

  1. Django文件上傳處理:

在Django中,你可以使用request.FILES對象來處理上傳的文件。以下是一個(gè)簡單的Django文件上傳示例:

from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
import os

UPLOAD_FOLDER = 'path/to/upload/folder'
ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg'}

def allowed_file(filename):
    return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS

@csrf_exempt
def upload_file(request):
    if request.method == 'POST':
        if 'file' not in request.FILES:
            return JsonResponse({'error': 'No file part'}, status=400)
        file = request.FILES['file']
        if file.name == '':
            return JsonResponse({'error': 'No selected file'}, status=400)
        if file and allowed_file(file.name):
            filename = os.path.join(UPLOAD_FOLDER, file.name)
            with open(filename, 'wb+') as destination:
                for chunk in file.chunks():
                    destination.write(chunk)
            return JsonResponse({'message': 'File uploaded and saved.'}, status=200)
        else:
            return JsonResponse({'error': 'Invalid file type.'}, status=400)
    else:
        return JsonResponse({'error': 'Invalid request method.'}, status=400)

在這個(gè)示例中,我們首先定義了一個(gè)upload_file視圖函數(shù),它處理POST請求中的文件上傳。我們使用request.FILES對象檢查請求中是否包含文件,然后檢查文件名是否為空。如果文件存在且類型允許,我們將其保存到指定的上傳文件夾中。

注意:在這個(gè)示例中,我們使用了@csrf_exempt裝飾器來禁用CSRF保護(hù)。在實(shí)際項(xiàng)目中,你可能需要考慮如何正確處理CSRF保護(hù)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI