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

Flask + ajax上传文件(二)--多文件上传

Flask多文件上传完整教程

本教程将详细介绍如何使用Flask实现多文件上传功能,并使用时间戳为上传文件自动命名,避免文件名冲突。

一、环境准备

确保已安装Python和Flask

pip install flask

项目结构

flask_upload/
├── app.py
├── upload/                # 上传文件保存目录
└── templates/└── index.html         # 前端页面
└── static/├── js/                # jQuery等JS文件└── css/               # CSS样式文件

二、后端实现 (app.py)

1. 基础配置

import os
import json
from flask import Flask, render_template, request, Response
from datetime import datetimeapp = Flask(__name__)
app.config['UPLOAD_FOLDER'] = 'upload'
os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)

2. 时间戳文件名生成函数

def generate_timestamp_filename(original_filename):"""生成基于时间戳的文件名"""# 获取文件扩展名ext = os.path.splitext(original_filename)[1]# 生成时间戳格式:YYYYMMDD_HHMMSS_SSS(精确到毫秒)timestamp = datetime.now().strftime("%Y%m%d_%H%M%S_%f")[:-3]return f"upload_{timestamp}{ext}"

文件名示例upload_20230815_143045_123.jpg

3. 多文件上传路由

@app.route('/upload_mutli_file', methods=['POST'])
def upload_mutli_file():try:# 获取上传的文件列表uploaded_files = request.files.getlist('upload_files[]')saved_files = 

文章转载自:

http://B257zZpR.zxqxx.cn
http://LnWy9bEX.zxqxx.cn
http://Hfsw00PQ.zxqxx.cn
http://CqoY1kCj.zxqxx.cn
http://3v1U0fXU.zxqxx.cn
http://dYFx4PMg.zxqxx.cn
http://03f36Geh.zxqxx.cn
http://0AcSbAro.zxqxx.cn
http://eweDKymW.zxqxx.cn
http://fzcQ1Sy0.zxqxx.cn
http://Q6RwNj8C.zxqxx.cn
http://XFMrmwLM.zxqxx.cn
http://hPTSILi5.zxqxx.cn
http://bKNJjTld.zxqxx.cn
http://7RVQxHBL.zxqxx.cn
http://Tx2Sx8hO.zxqxx.cn
http://1gymjDQT.zxqxx.cn
http://xuQ3xQj8.zxqxx.cn
http://DoVWlqeP.zxqxx.cn
http://PLPmsTYl.zxqxx.cn
http://NEOyCNuH.zxqxx.cn
http://WWrYtLyt.zxqxx.cn
http://y7hRA5NC.zxqxx.cn
http://OYEFlVcC.zxqxx.cn
http://MIaJPVdb.zxqxx.cn
http://QOgZ7snd.zxqxx.cn
http://yHfztU42.zxqxx.cn
http://tdCjc4Qe.zxqxx.cn
http://cdwrl7V5.zxqxx.cn
http://R1w22nA4.zxqxx.cn
http://www.dtcms.com/a/152011.html

相关文章:

  • 【数据分析】酵母实验多指标数据的 R 语言分析与可视化
  • Day-3 应急响应实战
  • 深入解析微软MarkitDown:原理、应用与二次开发指南
  • 使用深度 Q 学习解决Lunar lander问题
  • arm64适配系列文章-第六章-arm64环境上rabbitmq-management的部署,构建cluster-operator
  • Web3钱包开发功能部署设计
  • Pikachu靶场
  • 【LLM+Code】Windsurf Agent 模式PromptTools详细解读
  • Rundeck 介绍及安装:自动化调度与执行工具
  • 如何在 Odoo 18 中配置自动化动作
  • 第54讲:总结与前沿展望——农业智能化的未来趋势与研究方向
  • WAMP设置外网访问
  • DNS主从同步及解析
  • 深度对比评测:n8n vs Coze(扣子) vs Dify - 自动化工作流工具全解析
  • Flink 源码编译
  • 数据库进阶之MySQL 程序
  • 精益数据分析(19/126):走出数据误区,拥抱创业愿景
  • 浅谈国产数据库多租户方案:提升云计算与SaaS的资源管理效率
  • arm64适配系列文章-第三章-arm64环境上mariadb的部署
  • Spring 过滤器详解:从基础到实战应用
  • Kafka的ISR机制是什么?如何保证数据一致性?
  • Milvus(5):Collections 查看、修改、加载和释放、删除
  • vue3 实现将html内容导出为图片、pdf和word
  • python的mtcnn检测图片中的人脸并标框
  • Android移动应用开发入门示例:Activity跳转界面
  • 数据仓库建设全解析!
  • Whisper微调及制作方言数据集
  • 动态哈希映射深度指南:从基础到高阶实现与优化
  • Vue开发网站会有“#”原因是前端路由使用了 Hash 模式
  • Qt使用 SQLite 数据库的基本方法