当前位置: 首页 > news >正文

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>

http://www.lryc.cn/news/572016.html

相关文章:

  • MongoDB学习记录(快速入门)
  • 26.多表查询
  • Vue 二维码组件
  • 02-three.js Transform objects
  • 什么是Gateway
  • 详细讲解Redis为什么被设计成单线程
  • 稀疏大模型架构与训练算法研究
  • 最新期刊影响因子,基本包含全部期刊
  • vue | vue 插件化机制,全局注册 和 局部注册
  • 基于python的web系统界面登录
  • 深入理解mysql索引
  • PHP vs Python (Flask/Django) vs Java (SpringBoot) vs Vue:2024全栈技术终极对决
  • singlefligt使用方法和源码解读
  • MySQL 索引和select优化
  • ​​网络工程师知识点精讲与例题解析:数据链路层技术​​
  • 计算机视觉课程总结
  • 【Node.js 的底层实现机制】从事件驱动到异步 I/O
  • Python Peewee库连接和操作MySQL数据库
  • 条件向量运算与三元表达式
  • C语言——枚举
  • 解决Matplotlib三维图无法旋转的问题
  • AndroidR平台ToastPresenter引出BinderProxy泄漏
  • 实战指南:用DataHub管理Hive元数据
  • SkyWalking 部署与应用(Windows)
  • 7-4 身份证号处理
  • 企业班车出行服务系统的SDK选型、核心功能优化迭代的避坑复盘
  • Android软件适配遥控器需求-案例经验分享
  • WebRTC(六):ICE协议
  • 汇编语言期末快速过手笔记
  • React Native WebView键盘难题:如何让输入框不被键盘遮挡?