Flask视频和图片上传
视频:
pip install Flask-WTF Flask-Uploads
from flask import Flask
from flask_uploads import UploadSet, configure_uploads, patch_request_class
from flask_wtf import FlaskForm
from wtforms import FileField, SubmitField
from werkzeug.utils import secure_filenameapp = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
app.config['UPLOADED_VIDEOS_DEST'] = 'uploads/' # 视频存储路径# 配置上传大小
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 # 限制上传文件大小,例如16MB
patch_request_class(app, ('multipart/form-data', 'application/octet-stream')) # 支持大文件上传# 创建上传集合
videos = UploadSet('videos', extensions=('mp4', 'avi', 'mov')) # 支持的文件类型
configure_uploads(app, videos)class VideoUploadForm(FlaskForm):video = FileField('Video')submit = SubmitField('Upload Video')@app.route('/upload', methods=['GET', 'POST'])
def upload_video():form = VideoUploadForm()if form.validate_on_submit():filename = secure_filename(form.video.data.filename)form.video.data.save(os.path.join(app.config['UPLOADED_VIDEOS_DEST'], filename))return 'Video uploaded successfully!'return render_template('upload.html', form=form)if __name__ == "__main__":app.run(host="0.0.0.0",port=8080)
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Upload Video</title>
</head>
<body><h1>Upload a Video</h1><form method="POST" action="/upload" enctype="multipart/form-data">{{ form.hidden_tag() }}{{ form.video.label }} {{ form.video() }}<br>{{ form.submit() }}<br></form>
</body>
</html>
Flask图片上传:
from flask import Flask, request, redirect, url_for, render_template
import os
from werkzeug.utils import secure_filename
from torchvision import datasets, transforms
from PIL import Image
import torch
import torch.nn.functional as F
from torch.nn import Conv2d,MaxPool2d,Linear,Sequential,Flatten
from torch import nnapp = Flask(__name__)# 配置上传文件夹路径
UPLOAD_FOLDER = 'uploads/'
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif'}
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDERdef allowed_file(filename):return '.' in filename and \filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS@app.route('/')
def index():return render_template('upload.html') # 渲染上传页面@app.route('/upload', methods=['POST'])
def upload_file():if 'image' not in request.files:return redirect(request.url)file = request.files['image']if file.filename == '':return redirect(request.url)if file and allowed_file(file.filename):filename = secure_filename(file.filename)file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))return "上传成功!"if __name__ == "__main__":app.run(host="0.0.0.0",port=8080)
html:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Upload Image</title>
</head>
<body><h1>Upload a new Image</h1><form action="/upload" method="post" enctype="multipart/form-data"><input type="file" name="image" required><br><br><input type="submit" value="Upload Image"></form>
</body>
</html>