python Flask 写一个简易的 web 端上传文件程序 (附demo)

python Flask 写一个简易的 web 端上传文件程序 (附demo)

  • 需求
  • 介绍
    • 核心代码:
  • 文件结构
    • 前端文件
    • 后端文件
  • 完整代码
  • 演示


需求

在当今数字化时代,文件上传需求日益普遍。无论是个人还是企业,都可能需要实现文件上传功能。为此,本文将分享如何使用Python Flask框架创建一个简易的Web端上传文件程序。

介绍

需要源码的留下邮箱,私信也会看,不过看的不勤,留言有通知。

Flask 是一个用于构建 Web 应用程序的轻量级 Python Web 框架。它设计简单、易于学习和使用,但同时也非常灵活,适用于从小型项目到大型应用程序的各种场景。

核心代码:


@app.route('/upload', methods=['POST'])
def upload_file():if 'file' not in request.files:return '无文件部分'file = request.files['file']if file.filename == '':return '没有可选择的文件'if file:# 设置文件存储路径upload_path = os.path.join('static/uploads', file.filename)# 检测路径是否存在,不存在则创建if not os.path.exists(os.path.dirname(upload_path)):os.makedirs(os.path.dirname(upload_path))# 存储文件file.save(upload_path)return '文件已上传'

在Flask中,request.files 是用于处理上传文件的对象。当用户通过表单上传文件时,这个对象可以用来访问和处理上传的文件数据。request.files 是一个字典,其中键是表单中文件上传字段的名称,值是与该字段相关联的文件对象。

request.files 字典中文件对象常见的字段和方法:

字段/方法描述示例
filename获取上传文件的原始文件名filename = request.files[‘file’].filename
stream获取文件的二进制流,可用于读取文件内容file_content = request.files[‘file’].stream.read()
content_type获取文件的MIME类型。content_type = request.files[‘file’].content_type
content_length获取文件的内容长度(以字节为单位)content_length = request.files[‘file’].content_length
save(destination)将上传的文件保存到指定的目标路径destination是保存文件的路径,可以是相对路径或绝对路径request.files[‘file’].save(‘uploads/’ + filename)

file.save() 是用于将上传的文件保存到指定的目标路径。

文件结构

下面我们介绍一下我们的文件结构

在这里插入图片描述

前端文件

templates.index.html

后端文件

main.py

完整代码

index.html

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>文件工作台</title>
</head>
<body>
<h1>文件工作台</h1>
<form><input type="file" id="file" name="file"><button type="button" onclick="uploadFile()">上传文件</button>
</form>
</body>
</html><script>function uploadFile() {var fileInput = document.getElementById('file');var file = fileInput.files[0];if (file) {var formData = new FormData();formData.append('file', file);var xhr = new XMLHttpRequest();xhr.open('POST', '/upload', true);xhr.onload = function () {if (xhr.status == 200) {alert('文件上传成功');} else {alert('文件上传失败');}};xhr.send(formData);} else {alert('请选择一个文件');}}
</script>

main.py

import osfrom flask import Flask, request, render_templateapp = Flask(__name__)@app.route('/')
def index():return render_template('index.html')@app.route('/upload', methods=['POST'])
def upload_file():if 'file' not in request.files:return '无文件部分'file = request.files['file']if file.filename == '':return '没有可选择的文件'if file:# 设置文件存储路径upload_path = os.path.join('static/uploads', file.filename)# 检测路径是否存在,不存在则创建if not os.path.exists(os.path.dirname(upload_path)):os.makedirs(os.path.dirname(upload_path))# 存储文件file.save(upload_path)return '文件已上传'if __name__ == '__main__':app.run()

演示

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

需要源码的留下邮箱,私信也会看,不过看的不勤,留言有通知。

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

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

相关文章

图解支付-金融级密钥管理系统:构建支付系统的安全基石

经常在网上看到某某公司几千万的个人敏感信息被泄露&#xff0c;这要是放在持牌的支付公司&#xff0c;可能就是一个非常大的麻烦&#xff0c;不但会失去用户的信任&#xff0c;而且可能会被吊销牌照。而现实情况是很多公司的技术研发人员并没有足够深的安全架构经验来设计一套…

arcpy高德爬取路况信息数据json转shp

最近工作上遇到爬取的高德路况信息数据需要在地图上展示出来&#xff0c;由于json数据不具备直接可视化的能力&#xff0c;又联想到前两个月学习了一点点arcpy的知识&#xff0c;就花了一些时间去写了个代码&#xff0c;毕竟手动处理要了老命了。 1、json文件解读 json文件显…

机器学习的整个流程

机器学习的整个流程定义了数据科学团队执行以创建和交付机器学习模型的工作流。此外&#xff0c;机器学习流程还定义了团队如何协作合作&#xff0c;以创建最有用的预测模型。 机器学习high level的流程 机器学习流程的关键步骤包括问题探索&#xff08;Problem Exploration&a…

vscode 无法远程连接waiting the server log

使用版本 报错信息 相关日志 [17:32:59.765] > Waiting for server log... [17:32:59.801] > Waiting for server log... [17:32:59.831] > > * > * Visual Studio Code Server > * > * By using the software, you agree to > * the Visual Studio…

vulhub中AppWeb认证绕过漏洞(CVE-2018-8715)

AppWeb是Embedthis Software LLC公司负责开发维护的一个基于GPL开源协议的嵌入式Web Server。他使用C/C来编写&#xff0c;能够运行在几乎先进所有流行的操作系统上。当然他最主要的应用场景还是为嵌入式设备提供Web Application容器。 AppWeb可以进行认证配置&#xff0c;其认…

RK3399平台开发系列讲解(内存篇)进程内存详解

🚀返回专栏总目录 文章目录 一、虚拟地址映射的物理内存1.1、物理内存1.2、虚拟内存1.2.1、用户态:低特权运行程序1.2.2、内核态:运行的程序需要访问操作系统内核数据二、PageCache三、指标查询命令沉淀、分享、成长,让自己和他人都能有所收获!😄 📢进程消耗的内存包…

详解洛谷P2912 [USACO08OCT] Pasture Walking G(牧场行走)(lca模板题)

题目 思路 一道模板题&#xff0c;没啥好说的&#xff0c;直接见代码 代码 #include <bits/stdc.h> using namespace std; int n,q,a,to[100001][22],b,deep[100001],c,t[1000001]; struct ff {int id,len; }; vector<ff> vec[100001]; void dfs(int x,int fa,i…

LeetCode:292.Nim 游戏

大一开学到现在&#xff0c;我不禁思考一个问题&#xff1a;代码重要吗&#xff1f; 我的答案是&#xff0c;根本不重要&#xff0c;或者说&#xff0c;是次要的。我认为分析问题&#xff0c;和画图是写题的开始&#xff0c;方法的学习&#xff0c;和灵活运用是目的。代码从来…

华为数通方向HCIP-DataCom H12-821题库(单选题:421-440)

第421题 以下关于IS-IS中路由器分类的描述,错误的是哪一项? A、Level-1路由器无法与Level-2路由器建立邻接关系 B、华为路由器上配置IS-IS时,缺省时,路由器全局Level为Level-1-2 C、Level-2的LSDB只包含Level-2路由器所在区域的路由信息 D、Level-1路由器可以和Level-1-2路…

如何在 iconfont 中使用彩色图标

新建彩色图标项目&#xff0c;在设置字体格式时选择【彩色】 如果需要项目支持彩色图标&#xff0c;则图标数不得超过40个&#xff0c;所以不修改原项目的项目配置&#xff0c;而是新建 引用方式按照普通图标形式引用即可&#xff0c;即使给图标设置了color也不会修改原图标…

STM32WLE5JC

多协议LPWAN 32位 ARM Cortex-M4 MCUs&#xff0c;LoRa&#xff0c;FSK&#xff0c;MSK&#xff0c;BPSK&#xff0c;最大256KB FLASH&#xff0c;64KB SRAM。 LPWAN代表低功耗广域网&#xff08;Low-Power Wide-Area Network&#xff09;&#xff0c;是一种无线网络技术&…

NoSQL(非关系型数据库)

目录 前言&#xff1a; 一、NoSQL的类别 1.1 键值&#xff08;key-value&#xff09;存储数据库 1.2 列存储数据库 1.3 文档型数据库 1.4 图形数据库 二、NoSQL适应场景 三、在分布式数据库中的CAP原理 3.1 传统的ACID 3.2 CAP 四、什么是BASE 前言&#xff1a; NoS…