Flask与Django文件上传处理

发布时间:2024-11-14 16:36:00 作者:小樊
来源:亿速云 阅读:79

Flask和Django都是Python Web框架,它们都支持文件上传处理。这里分别为你介绍这两个框架的文件上传处理方法。

  1. Flask文件上传处理:

在Flask中,你可以使用request.files对象来处理上传的文件。以下是一个简单的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()

在这个示例中,我们首先定义了一个upload_file视图函数,它处理POST请求中的文件上传。我们使用request.files对象检查请求中是否包含文件,然后检查文件名是否为空。如果文件存在且类型允许,我们将其保存到指定的上传文件夹中。

  1. Django文件上传处理:

在Django中,你可以使用request.FILES对象来处理上传的文件。以下是一个简单的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)

在这个示例中,我们首先定义了一个upload_file视图函数,它处理POST请求中的文件上传。我们使用request.FILES对象检查请求中是否包含文件,然后检查文件名是否为空。如果文件存在且类型允许,我们将其保存到指定的上传文件夹中。

注意:在这个示例中,我们使用了@csrf_exempt装饰器来禁用CSRF保护。在实际项目中,你可能需要考虑如何正确处理CSRF保护。

推荐阅读:
  1. Flask与Django性能差异何在
  2. Flask vs Django哪个更适合初创项目

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

django

上一篇:Django的模板上下文处理器Flask如何传递数据

下一篇:Django的FormsetsFlask表单集合处理

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》