flask 上传文件


from flask import Flask, request, render_template,redirect, url_for
from werkzeug.utils import secure_filename
import os
from flask import send_from_directory # send_from_directory可以从目录加载文件app = Flask(__name__)#UPLOAD_FOLDER = 'media'  # 注意:要提前在根目录下新建media文件,否则会报错
'''
报错路径找不到:
要解决此问题,可以将反斜杠替换为正斜杠,或者使用原始字符串字面值指定文件路径.
通过在字符串前添加r,它就变成了一个原始字符串文字,并且反斜杠将被解释为文字反斜杠而不是转义字符。
'''
#UPLOAD_FOLDER = 'D:\pythonXangmu\pythonproject01\flask\caiquan2\media'
UPLOAD_FOLDER = r'D:\pythonXangmu\pythonproject01\flask\caiquan2\media'ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER # UPLOAD FOLDER 英文上传文件夹# 判断上传的文件是否是允许的后缀
def 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('/center/upload',methods=['POST'])#对应表单里面的action="/upload"
def center():if "file" not in request.files: #"file" 对应前端upload.html 中的namereturn redirect(request.url)#redirect 重定向新的地址file = request.files.get('file')  # 获取文件if not allowed_file(file.filename): #如果不是传入的指定格式文件。重定向到当前urlreturn 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))  # 保存文件  os.path.join把目录和文件名合成一个路径return redirect(url_for('show', filename=filename))# 展示
@app.route('/show/<filename>')
def show(filename):# send_from_directory可以从目录加载文件return send_from_directory(app.config['UPLOAD_FOLDER'], filename)if __name__ == '__main__':app.run(host='0.0.0.0', port=5000, debug=True)

upload.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>文件上传</title>
</head>
<body><form action="/center/upload" method="post" enctype="multipart/form-data"><input type="file" name="file"><input type="submit"  value="提交"></form></body>
</html>

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/199921.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解强化学习——马尔可夫决策过程:占用度量-[代码实现]

分类目录&#xff1a;《深入理解强化学习》总目录 在文章《深入理解强化学习——马尔可夫决策过程&#xff1a;占用度量-[基础知识]》我们介绍了占用度量的基础知识&#xff0c;本文我们编写代码来近似估计占用度量。这里我们采用近似估计&#xff0c;即设置一个较大的采样轨迹…

会声会影2024购买多少钱 会声会影在哪里购买

掌握视频编辑技术&#xff0c;能为我们的工作和生活带来很多帮助。例如&#xff1a;将我们精心编辑的视频&#xff0c;上传到抖音、快手等平台进行变现&#xff1b;通过天马行空的视频创意&#xff0c;摇身一变成为B站up主。因此&#xff0c;拥有一款像会声会影这样的视频编辑软…

信号可靠性剖析

问题 基于信号发送的进程间通信方式可靠吗&#xff1f;&#xff1f;&#xff1f; 信号查看(kill -l) 信号的分类 不可靠信号 (传统信号) 信号值在 [1, 31] 之间的所有信号 可靠信号 (实时信号) 信号值在 [SIGRTMIN&#xff0c;SIGRTMAX]&#xff0c;即&#xff1a;[34&…

计算机组成原理学习-总线总结

复习本章时&#xff0c;思考以下问题&#xff1a; 1)引入总线结构有什么好处&#xff1f;2)引入总线结构会导致什么问题&#xff1f;如何解决&#xff1f;

Squid安装与配置(ip代理)

继前面一篇Tinyproxy安装与配置(ip代理)&#xff0c;在实际使用中会发现在请求一些网站时会被拒绝&#xff0c;那是因为Tinyproxy其实不支持所谓的高匿代理。所以这次用功能更加丰富的squid试试。 1、安装 yum install squid -y yum install httpd-tools -y2、配置 1、备份原…

变电站设计综合应用软件

产品概述 变电站设计综合应用软件,以下称为软件,是一款面向智能变电站虚拟二次回路设计和光纤回路设计的单机版桌面应用软件。软件为用户提供了直观易用、一键安装、功能齐全的轻量级的设计支撑。像常规的工具化软件一样,该软件在开始设计时需要通过新建一个项目,开启一段…

Oracle初始化参数文件pfile和spfile

pfile &#xff1a;Oracle 9i之前&#xff0c;ORACLE一直采用PFILE方式存储初始化参数&#xff0c;该文件为文本文件&#xff0c;可以在操作系统级别修改。当spfile文件修改出现错误导致oracle无法启动时&#xff0c;可以使用 pfile文件启动数据库 spfile&#xff1a;从Oracle…

Python 元组详解(tuple)

文章目录 1 概述1.1 性质1.2 下标1.3 切片 2 常用方法2.1 访问&#xff1a;迭代、根据下标2.2 删除&#xff1a;del2.3 运算符&#xff1a;、*2.4 计算元组中元素个数&#xff1a;len()2.5 返回元组中元素最大值&#xff1a;max()2.6 返回元组中元素最小值&#xff1a;min()2.7…

Linux快速给用户改密码

由于巡检过程中需要修改部分用户名密码&#xff0c;这些强密码包含大小写、数字和特殊符号&#xff0c;完全没有规律&#xff0c;让我手动输是不可能的&#xff0c;于是使用以下命令来输入&#xff0c;但是为了不在history里面留下痕迹&#xff0c;所以先关闭了历史命令功能&am…

【C++】const关键字的详解!!

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

Android MVVM+coroutine+retrofit+flow+hilt

文章目录 Android MVVMcoroutineretrofitflowhilt概述依赖注入层数据层视图层模型视图层代码下载 Android MVVMcoroutineretrofitflowhilt 概述 代码结构&#xff1a; 依赖注入层 数据库&#xff1a; Module InstallIn(SingletonComponent::class) class DBModule {Singleto…

数据结构与算法-D2D3线性表之顺序表

线性表&#xff1a;包含若干数据元素的一个线性序列&#xff0c;特征如下&#xff1a; 1&#xff09;对非空表&#xff0c;a0是表头&#xff0c;无前驱&#xff1b; 2&#xff09;an-1是表尾&#xff0c;无后继&#xff1b; 3&#xff09;其他元素仅且仅有一个前驱&#xff0c;…

【PTA题目】6-1 猴子吃桃-递归 分数 10

6-1 猴子吃桃-递归 分数 10 全屏浏览题目 切换布局 作者 ZZULI 单位 郑州轻工业大学 小猴子第一天摘下桃子若干&#xff0c;当即吃掉一半&#xff0c;还不过瘾&#xff0c;又多吃一个&#xff0c;第二天又将剩下的桃子吃掉一半多一个&#xff0c;以后每天吃掉前一天剩下的一…

完美洗牌问题学习笔记

问题背景 完美洗牌&#xff1a;一副 52 张的排序好的扑克牌&#xff0c;从中间分为两半&#xff0c;每部分各 26 张。假设每次都分为左右两部分&#xff0c;然后将 右部分的牌和左部分的牌按顺序交错穿插&#xff0c;每张左部分牌后面加入一张右部分的&#xff0c;依序加入所有…

基于YOLOv8深度学习的120种犬类检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战、狗类检测、犬种识别

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

【“C++ 精妙之道:解锁模板奇谭与STL精粹之门“】

【本节目标】 1. 泛型编程 2. 函数模板 3. 类模板 4. 什么是STL 5. STL的版本 6. STL的六大组件 7. STL的重要性 8. 如何学习STL 9.STL的缺陷 1. 泛型编程 如何实现一个通用的交换函数呢&#xff1f; void Swap(int& left, int& right) {int temp left;lef…

odoo自定义提示性校验

背景: 在odoo16的原生的代码里&#xff0c;可以给按钮添加一个 confirm属性&#xff0c;从而达到 提示性校验的效果。 问题&#xff1a; 这个属性加了之后一定会弹出提示性校验的对话框&#xff0c;于是如何根据我们的实际业务&#xff0c;从后端返回提示性信息&#xff0c;…

5.2k Star!一个可视化全球实时天气开源项目!

大家好&#xff0c;本文给大家推荐一款全球实时天气开源项目&#xff1a;Earth。 项目简介 Earth 是一个可视化全球天气实况的项目。该项目以可视化的方式展示了全球的天气情况&#xff0c;提供了风、温度、相对湿度等多种天气数据&#xff0c;以及风、洋流和波浪的动画效果…

CSES-1632 | Movie Festival II

CSES - 1632 Movie Festival II 原题链接分析程序代码 原题链接 CSES - 1632 Movie Festival II 分析 这题需要用到贪心的策略&#xff0c;即先结束的电影先安排&#xff0c;这样才能看尽可能多的电影。这题可以归类为区间问题&#xff0c;先按照结束时间对区间进行升序排序…

关于mysql的lower_case_table_names引发的思考

lower_case_table_names设置大小写敏感的三个值0、1、2的区别&#xff1f; lower_case_table_names参数详解 1.参数说明&#xff1a; lower_case_table_names 0 表名 存储为给定的大小和比较是区分大小写的lower_case_table_names 1 表名 存储在磁盘是小写的 &#xff0c;但…