flask-文件上传/下载
版权声明:本文为博主原创文章,未经博主允许不得转载。 http://blog.csdn.net/qq_25730711/article/details/53643758
目录(?)[+]
废话不说,看代码
上传文件
import os
from flask import Flask, render_template, send_from_directory, request, jsonifyapp = Flask(__name__)UPLOAD_FOLDER = 'upload'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER # 设置文件上传的目标文件夹
basedir = os.path.abspath(os.path.dirname(__file__)) # 获取当前项目的绝对路径
ALLOWED_EXTENSIONS = set(['txt', 'png', 'jpg', 'xls', 'JPG', 'PNG', 'xlsx', 'gif', 'GIF']) # 允许上传的文件后缀# 判断文件是否合法
def allowed_file(filename):return '.' in filename and filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS# 具有上传功能的页面
@app.route('/test/upload')
def upload_test():return render_template('upload.html')@app.route('/api/upload', methods=['POST'], strict_slashes=False)
def api_upload():file_dir = os.path.join(basedir, app.config['UPLOAD_FOLDER']) # 拼接成合法文件夹地址if not os.path.exists(file_dir):os.makedirs(file_dir) # 文件夹不存在就创建f=request.files['myfile'] # 从表单的file字段获取文件,myfile为该表单的name值if f and allowed_file(f.filename): # 判断是否是允许上传的文件类型fname=f.filenameext = fname.rsplit('.', 1)[1] # 获取文件后缀unix_time = int(time.time())new_filename = str(unix_time)+'.'+ext # 修改文件名f.save(os.path.join(file_dir, new_filename)) #保存文件到upload目录return jsonify({"errno": 0, "errmsg": "上传成功"})else:return jsonify({"errno": 1001, "errmsg": "上传失败"})
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<form id="form1" method="post" action="/api/upload" enctype="multipart/form-data"><div><input id="File1" type="file" name="myfile"/> <!--后台代码中获取文件是通过form的name来标识的--><input type="submit">提交</input></div>
</form>
</body>
</html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
来看一下效果
- 打开上传页
2.选择文件
3.上传成功
文件下载
@app.route("/download/<path:filename>")
def downloader(filename):dirpath = os.path.join(app.root_path, 'upload') # 这里是下在目录,从工程的根目录写起,比如你要下载static/js里面的js文件,这里就要写“static/js”return send_from_directory(dirpath, filename, as_attachment=True) # as_attachment=True 一定要写,不然会变成打开,而不是下载
- 1
- 2
- 3
- 4
看一下效果
1.地址是这样子的
2.下载完成
感谢阅读
# coding=utf-8 import os,time from flask import Flask, render_template, send_from_directory, request, jsonifyapp = Flask(__name__)UPLOAD_FOLDER = 'upload' app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER # 设置文件上传的目标文件夹 basedir = os.path.abspath(os.path.dirname(__file__)) # 获取当前项目的绝对路径 ALLOWED_EXTENSIONS = set(['txt', 'png', 'jpg', 'xls', 'JPG', 'PNG', 'xlsx', 'gif', 'GIF']) # 允许上传的文件后缀 # 判断文件是否合法 def allowed_file(filename):return '.' in filename and filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS# 具有上传功能的页面 @app.route('/test/upload') def upload_test():return render_template('upload2.html')@app.route('/api/upload', methods=['POST'], strict_slashes=False) def api_upload():file_dir = os.path.join(basedir, app.config['UPLOAD_FOLDER']) # 拼接成合法文件夹地址 if not os.path.exists(file_dir):os.makedirs(file_dir) # 文件夹不存在就创建 f=request.files['myfile'] # 从表单的file字段获取文件,myfile为该表单的name值 if f and allowed_file(f.filename): # 判断是否是允许上传的文件类型 fname=f.filenameext = fname.rsplit('.', 1)[1] # 获取文件后缀 unix_time = int(time.time())new_filename = str(unix_time)+'.'+ext # 修改文件名 f.save(os.path.join(file_dir, new_filename)) #保存文件到upload目录 return jsonify({"errno": 0, "errmsg": "上传成功"})else:return jsonify({"errno": 1001, "errmsg": "上传失败"})@app.route("/download/<path:filename>") def downloader(filename):print "file",filenamedirpath = os.path.join(app.root_path, 'upload') # 这里是下在目录,从工程的根目录写起,比如你要下载static/js里面的js文件,这里就要写“static/js” return send_from_directory(dirpath, filename, as_attachment=True) # as_attachment=True 一定要写,不然会变成打开,而不是下载 if __name__ == '__main__':app.run()
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form id="form1" method="post" action="/api/upload" enctype="multipart/form-data"> <div> <input id="File1" type="file" name="myfile"/> <!--后台代码中获取文件是通过form的name来标识的--> <input type="submit">提交</input> </div> <p> <a href="http://127.0.0.1:5000/download/3.txt" download="33.txt">Download file</a> </p> </form> </body> </html>
upload2.html 用过链接也可以
flask-文件上传/下载相关推荐
- 教你如何实现c#文件上传下载功能
简单介绍一下c#文件上传下载功能实现. NuGet 安装SqlSugar Model文件下新建 DbContext 类 public class DbContext {public DbContext ...
- [C# 网络编程系列]专题十一:实现一个基于FTP协议的程序——文件上传下载器...
引言: 在这个专题将为大家揭开下FTP这个协议的面纱,其实学习知识和生活中的例子都是很相通的,就拿这个专题来说,要了解FTP协议然后根据FTP协议实现一个文件下载器,就和和追MM是差不多的过程的,相信 ...
- SpringMVC整合fastdfs-client-java实现web文件上传下载
为什么80%的码农都做不了架构师?>>> 版权声明:本文为博主原创文章,转载请标明出处(http://blog.csdn.net/wlwlwlwl015)Thanks. 目录( ...
- JavaWeb实现文件上传下载功能实例解析
转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...
- 文件上传 java web_JavaWeb 文件上传下载
1. 文件上传下载概述 1.1. 什么是文件上传下载 所谓文件上传下载就是将本地文件上传到服务器端,从服务器端下载文件到本地的过程.例如目前网站需要上传头像.上传下载图片或网盘等功能都是利用文件上传下 ...
- ASP.NET中文件上传下载方法集合
asp.net 2008-08-23 21:10:35 阅读0 评论0 字号:大中小 订阅 ASP.NET中文件上传下载方法集合 文件的上传下载是我们在实际项目开发过程中经常需要用到的技术,这里给 ...
- salesforce 零基础学习(四十二)简单文件上传下载
项目中,常常需要用到文件的上传和下载,上传和下载功能实际上是对Document对象进行insert和查询操作.本篇演示简单的文件上传和下载,理论上文件上传后应该将ID作为操作表的字段存储,这里只演示文 ...
- ASP.NET中常用的文件上传下载方法
ASP.NET中常用的文件上传下载方法 文件的上传下载是我们在实际项目开发过程中经常需要用到的技术,这里给出几种常见的方法,本文主要内容包括: 1.如何解决文件上传大小的限制 2.以文件形式保存到服务 ...
- java实现excel文件上传_java相关:SpringMVC下实现Excel文件上传下载
java相关:SpringMVC下实现Excel文件上传下载 发布于 2020-6-21| 复制链接 摘记: 在实际应用中,经常会遇到上传Excel或者下载Excel的情况,比如导入数据.下载统计数据 ...
- struts2教程--实现文件上传下载
Struts2文件上传下载 一.Struts2文件上传 提供 FileUpload 拦截器,用于解析 multipart/form-data 编码格式请求,解析上传文件的内容 fileUpload拦截 ...
最新文章
- 一文了解卷积神经网络基础,建议收藏
- STM32串口中断接收方式详细比较
- Windows驱动开发学习笔记(三)—— 内核空间内核模块
- python 如何判断一个数为整数?(判断整数,没有小数)(取余)判断整型 isinstance()
- python网络爬虫文献综述_python网络爬虫综述
- Objective-C中block的底层原理
- mysql savepoint作用_savepoint原理
- WCF 4.0 进阶系列 – 第十六章 使用回调合约发布和订阅事件(第二部分)
- ContentPresenter元素
- tomcat 点击startup.bat一闪而过
- php有哪些优化技巧
- NtQuerySystemInformation的使用
- Android中Style详解
- Flutter笔记--Sliver用法
- 各平台安装OpenCV
- 【已解决】macbook软件卸载了图标还在launchpad上怎么办?一分钟搞定!
- 计算机视觉论文-2021-06-04
- resultful风格使用方式
- Oracle组织架构
- MySQL的varchar水真的太深了——InnoDB记录存储结构