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

FLASK 上传文件

HTML

form enctype="multipart/form-data"

编码类型说明
application/x-www-form-urlencoded表单数据编码为名称/值对。 这是标准编码格式。
multipart/form-data表单数据编码为消息,页面上每个控件都有单独的部分。
text/plain表单数据以纯文本编码,没有任何控件或格式字符。

form action = url地址

<form action="/upload" method="post" enctype="multipart/form-data">

本来action属性是<form>元素的一个重要属性,它定义了当表单被提交时,表单数据应该发送到哪里(即哪个URL)。这个URL指向的服务器上的资源将负责处理这些提交的数据。

这里可以理解为绑定了后端函数,因为该地址规定了处理函数:

@app.route('/upload', methods=['POST'])
def upload():

FLASK

后端声明

import os
from flask import Flask, render_template, request, send_from_directory, redirect, url_for
from werkzeug.utils import secure_filename

app = Flask(__name__)
UPLOAD_FOLDER = 'static/uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
# 确保目录存在
os.makedirs(UPLOAD_FOLDER, exist_ok=True)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/upload', methods=['POST'])
def upload():
    if 'file' not in request.files:
        return redirect(request.url)
    file = request.files['file']
    if file.filename == '':
        return redirect(request.url)
    if file:
        filename = secure_filename(file.filename)
        file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
        file.save(file_path)

        return render_template('index.html', original=filename)

附录

<p>定义一个段落。
<hr>代表章节、文章或其他长内容中段落之间的分隔符。
<pre>代表其内容已经预先排版过,格式应当保留 。
<blockquote>代表引用自其他来源的内容。
<ol>定义一个有序列表。
<ul>定义一个无序列表。
<li>定义列表中的一个列表项。
<dl>定义一个定义列表(一系列术语和其定义)。
<dt>代表一个由下一个<dd>定义的术语。
<dd>代表出现在它之前术语的定义。
<figure>代表一个和文档有关的图例。
<figcaption>代表一个图例的说明。
<div>代表一个通用的容器,没有特殊含义。


http://www.kler.cn/a/504247.html

相关文章:

  • Docker常用命令大全
  • 数据挖掘实训:天气数据分析与机器学习模型构建
  • JAVA:利用 RabbitMQ 死信队列实现支付超时场景的技术指南
  • TensorFlow Quantum快速编程(基本篇)
  • 【华为OD-E卷 - IPv4地址转换成整数 100分(python、java、c++、js、c)】
  • 线程并发下的单例模式
  • 单独编译QT子模块
  • HTB:Driver[WriteUP]
  • JavaScript系列(21)-- Iterator详解
  • vscode使用Marscode编程助手
  • Bevy 移动端开发指南
  • Python在CMD中的参数说明
  • ubuntu20.04中vscode配置django
  • qt vs ios开发应用环境搭建和上架商店的记录
  • Bash语言的多线程编程
  • pytorch小记(一):pytorch矩阵乘法:torch.matmul(x, y)
  • 【reactjs进阶】react状态管理之mobx6.x的使用的使用(一)
  • Rust 游戏开发框架指南
  • pytorch小记(三):pytorch中的最大值操作:x.max()
  • Linux的基础IO内容补充-FILE
  • pycharm 安装三方插件后,导致pycharm无法启动的解决方式
  • LeetCode2799 统计完全子数组的数目
  • 播放音频文件同步音频文本
  • [mysql]日志
  • vscode 扩展Cline、Continue的差别?
  • fpga 的时钟管理模块pll 跟 dcm