flask框架应用之--文件上传

前言

用 Flask 处理文件上传比较方便。已上传的文件存储在内存或是文件系统中一个临时的位置。你可以通过请求对象的 files 属性访问它们。每个上传的文件都会存储在这个字典里。它表现近乎为一个标准的 Python file 对象,但它还有一个 save() 方法,这个方法允许你把文件保存到服务器的文件系统上。

一、环境

redhat7.0 server2 172.25.27.2
系统自带python2.7

二、flask框架安装

这里示范的是virtualenv中的 Flask安装
virtualenv 为每个不同项目提供一份 Python 安装。它并没有真正安装多个 Python 副本,但是它确实提供了一种巧妙的方式来让各项目环境保持独立。

[root@localhost ~]# wget https://pypi.python.org/packages/source/s/setuptools/setuptools-7.0.tar.gz
[root@localhost ~]# wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9
[root@localhost ~]# ls
pip-9.0.1.tar.gz  setuptools-7.0.tar.gz
[root@localhost ~]# tar -zxf pip-9.0.1.tar.gz
[root@localhost ~]# tar -zxf setuptools-7.0.tar.gz
[root@localhost ~]# cd pip-9.0.1/
[root@localhost pip-9.0.1]# python setup.py install
[root@localhost pip-9.0.1]# cd ../setuptools-7.0/
[root@localhost setuptools-7.0]# python setup.py install
[root@localhost ~]# pip install virtualenv
[root@localhost ~]# mkdir myproject
[root@localhost ~]# cd myproject
[root@localhost myproject]# virtualenv venv
New python executable in /root/myproject/venv/bin/python
Installing setuptools, pip, wheel...done.
[root@localhost myproject]# . venv/bin/activate
(venv) [root@localhost myproject]#

现在应该已经激活了 virtualenv(注意你的 shell 提示符显示的是当前活动的环境)。
现在你只需要键入以下的命令来激活 virtualenv 中的 Flask:

(venv) [root@localhost myproject]# pip install Flask

要退出virtualenv环境用以下命令

(venv) [root@localhost myproject]# deactivate 
[root@localhost myproject]# 

三、部署开始

1.安装uWSGI
(venv) [root@localhost myproject]# yum install -y python-devel
(venv) [root@localhost myproject]# pip install uwsgi
2.创建上传程序

有pycharm就可以直接使用pycharm来写,非常方便,一个文件就搞定,程序代码如下

# -*- coding: utf-8 -*-
import os
from flask import Flask, request, url_for, send_from_directory
from werkzeug import secure_filename

ALLOWED_EXTENSIONS = set(['png', 'jpg', 'jpeg', 'gif'])

app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = os.getcwd()
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024


html = '''
    <!DOCTYPE html>
    <title>Upload File</title>
    <h1>图片上传</h1>
    <form method=post enctype=multipart/form-data>
         <input type=file name=file>
         <input type=submit value=上传>
    </form>
    '''


def allowed_file(filename):
    return '.' in filename and \
           filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS


@app.route('/uploads/<filename>')
def uploaded_file(filename):
    return send_from_directory(app.config['UPLOAD_FOLDER'],
                               filename)


@app.route('/', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        file = request.files['file']
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
            file_url = url_for('uploaded_file', filename=filename)
            return html + '<br><img src=' + file_url + '>'
    return html


if __name__ == '__main__':
    app.run()
3.关闭防火墙、iptables及selinux,然后在pycharm里直接运行,或者

python upload.py runserver 127.0.0.1:5000
在这里插入图片描述

4.验证上传文件

浏览器打开 127.0.0.1:5000
在这里插入图片描述
回到pycharm看刚才上传的文件,和代码放在了同一目录下,上传成功

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值