flask 上传文件

简介:

flask upload

近日在学习python,接触到了flask框架,刚好客户有个需求,需要在网页上传一个python 代码的zip包,然后使用docker 容器运行这个zip里面的程序,输出结果。
对于初学文档没什么好说的,http://flask.pocoo.org/docs/0.12/ 从这里学习就好。

针对我目前的需求,这里贴上代码,比较臃肿,初学所写,见谅。详细请看 gayhub地址:https://github.com/magic-chenyang/flask-upload

from werkzeug.utils import secure_filename
from flask import Flask,render_template,jsonify,request,send_from_directory
import time
import os
import base64

app = 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('/',methods=['GET'],strict_slashes=False)
def indexpage():
    return render_template('index.html')


# 上传文件
@app.route('/',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['file']  # 从表单的file字段获取文件,file为该表单的name值

    if f and allowed_file(f.filename):  # 判断是否是允许上传的文件类型
        fname = secure_filename(f.filename)
        ext = 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目录
        if ext == 'zip':
            z = zipfile.ZipFile(file_dir+'/'+new_filename,'r')
            for zz in z.namelist():
               z.extract(zz,'/var/lib/docker/volumes/python_test/_data')
        return render_template('result.html',var1=fname)
    else:
        return jsonify({"errno": 1001, "errmsg": u"failed"})

if __name__ == '__main__':
    app.run(debug=True, port=6666,host='0.0.0.0')  #默认127.0.0.1:5000,这里修改了地址和端口方便自己使用
目录
相关文章
|
9月前
|
数据可视化 Python
Python Flask Echarts数据可视化图表实战晋级笔记(3)Blueprint蓝图解决单文件url分发
Python Flask Echarts数据可视化图表实战晋级笔记(3)Blueprint蓝图解决单文件url分发
71 0
|
前端开发 JavaScript Python
Flask热更新html模板文件和静态文件
Flask热更新html模板文件和静态文件
173 0
|
监控 Unix Linux
Flask项目能打包为单个exe文件运行?知道原理后简直不要太简单!
Python打包工具主要有三种:py2exe、PyInstaller和cx_Freeze。虽然是三种工具,但是实现打包的方式都是大同小异。无非将Python运行所需的基础dll文件和源码依赖的模块筛选后聚合在一起,从而达到脱离环境单独运行的目的。但其中比较新奇的是它们居然可以将最终代码打包成单个文件去运行,简直不要太神奇。 清风常用的打包工具为pyinstaller,安装下载简单,网上的文档也很齐全。
1190 0
|
存储 前端开发 JavaScript
基于Flask开发网站 -- 前端Ajax异步上传文件到后台
从网页界面(前端)上传文件到服务器(后端)
416 0
基于Flask开发网站 -- 前端Ajax异步上传文件到后台
|
JSON 前端开发 JavaScript
Flask使用bootstrap为HttpServer添加上传文件功能
今天朋友说,之前写的文章Flask开发vip版HttpServer,具备了httpserver的下载功能,比python原生的http服务好用多了,但能否再此基础上添加一个文件上传的功能呢?必须可以啊,正好复习下bootstrap和jQuery的相关知识。
146 0
|
存储 前端开发 JavaScript
Flask架站基础篇(三)--Flask生成文件内容和文件夹详解
Flask架站基础篇(三)--Flask生成文件内容和文件夹详解
296 0
Flask架站基础篇(三)--Flask生成文件内容和文件夹详解
|
前端开发 JavaScript Python
Flask热更新html模板文件和静态文件
Flask热更新html模板文件和静态文件
359 0
|
Python SQL 开发工具
Python基础教程:Flask上传文件(包含中文)保存后乱码问题解决
Python基础教程:Flask上传文件(包含中文)保存后乱码问题解决
15792 0
|
Web App开发 前端开发 Python
Flask入门文件上传邮件发送(八)
1 视图传递多个参数 (1) 普通传参 : 关键字参数传递 return render_template('模板名称.
|
API 对象存储 Python
Flask下载文件
前言 由于最近在做文件管理模块的功能,所以难免会遇到文件上传下载这块的功能。不过文件上传那块是调用的OSS api,所以接触的不多。 文件的下载: 1. 接口返回真实的文件 这种情况比较简单, flask里带有此类api, 可以用send_from_directory和send_file.
3518 0