• 技术文章 >Python技术 >Python基础教程

    python怎么实现文件上传界面

    爱喝马黛茶的安东尼爱喝马黛茶的安东尼2019-09-23 09:46:21原创3585

    本文章代码上传在码云上

    代码地址

    1

    git@gitee.com:DanYuJie/upanddown.git

    这里我们使用flask框架,简单实用

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    目录结构:

    upandown/

        static/

            css/

            js/

                jquery.min.js

                toastr.min.js

        templates/

                index.html

        test.py

    相关推荐:《Python基础教程

    首先我们需要一个页面在templates/index.html(这里使用form表单实现)

    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

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    <!DOCTYPE html>

    <html>

    <head>

        <meta charset="UTF-8">

        <meta name="viewport" content="width=device-width, initial-scale=1.0">

        <meta http-equiv="X-UA-Compatible" content="ie=edge">

        <link rel="stylesheet" href="../static/css/toastr.min.css">

        <script src="../static/js/jquery.min.js"></script>

        <script src="../static/js/toastr.min.js"></script>

        <title>Document</title>

    </head>

    <body>

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

            <input type="file" name="file" id="file">

            <input type="submit" value="upload">

            <a href=""></a>

        </form><hr>

        <ol id="filelist">

        </ol>

        <script>

            function checkstatus(){

                if('{{status}}'== 'OK'){

                    toastr['success']("上传成功");

                }else if('{{status}}'== 'null'){

                    toastr['error']("上传失败");          

                }

            }

            function get_list(){

                $.ajax({

                    url:'/getlist',

                    type:'GET',

                    success:function(result){

                        len_result = result.length;

                        for(var x =0; x < len_result; x++){

                            $("#filelist").append('<br><a href=/download/' + result[x] + '>' + result[x]

                            +'</a>');

                        }

                        alert(content_list);

                    },

                    error:function(){

                        alert("失败");

                    }

                });

            }

        checkstatus();

        get_list();

        </script>

    </body>

    </html>

    然后是后台接收

    test.py

    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

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    #!/usr/bin/env python

    # -*- coding:utf-8 -*-

    from flask import Flask,render_template, request, send_from_directory,jsonify, redirect

    import os

    # import sys

    # reload(sys)

    # sys.setdefaultencoding('utf-8')

    app = Flask(__name__)

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

    app.config['UPLOAD_FOLDER'] = os.getcwd()

    download_floder = app.config['UPLOAD_FOLDER'] + '/upload'

    def allow_file(filename):

        allow_list = ['png', 'PNG', 'jpg', 'doc', 'docx', 'txt', 'pdf', 'PDF', 'xls', 'rar', 'exe', 'md', 'zip']

        a = filename.split('.')[1]

        if a in allow_list:

            return True

        else:

            return False

    @app.route('/main')

    def home():

        return render_template('index.html')

    @app.route('/getlist')

    def getlist():

        file_url_list = []

        file_floder = app.config['UPLOAD_FOLDER'] + '/upload'

        file_list = os.listdir(file_floder)

        for filename in file_list:

            file_url = url_for('download',filename=filename)

            file_url_list.append(file_url)

        # print file_list

        return jsonify(file_list)

    @app.route('/download/<filename>')

    def download(filename):

        return send_from_directory(download_floder,filename, as_attachment=True)

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

    def upload():

        file = request.files['file']

        if not file:

            return render_template('index.html', status='null')

        # print type(file)

        if allow_file(file.filename):

            file.save(os.path.join(app.config['UPLOAD_FOLDER']+'/upload/', file.filename))

            return render_template('index.html', status='OK')

        else:

            return 'NO'

    if __name__ == '__main__':

        app.run(debug=True, host='0.0.0.0')

    专题推荐:python 文件上传
    上一篇:怎样添加新的python模块 下一篇:怎样保存python文件

    相关文章推荐

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网