Flask和Django都是Python Web框架,它们都支持文件上传处理。这里分别为你介绍这两个框架的文件上传处理方法。
在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
对象检查请求中是否包含文件,然后检查文件名是否为空。如果文件存在且类型允许,我们将其保存到指定的上传文件夹中。
在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保护。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。