Python 利用flask搭建一个共享服务器的步骤


Posted in Python onDecember 05, 2020

零、概述

我利用flask搭建了一个简易的共享服务器,分享给大家

一、python代码

import os
import time
from flask import Flask,render_template,url_for,redirect,send_from_directory
# 共享文件夹的根目录
rootdir = r'C:\Users\Administrator\Downloads\zlkt'
 
app = Flask(__name__)
 
@app.route('/doc/')
@app.route('/doc/<subdir>/')
def document(subdir=''):
    if subdir == '':
        # 名字为空,切换到根目录
        os.chdir(rootdir)
    else:
        fullname = rootdir + os.sep + subdir
        #  如果是文件,则下载
        if os.path.isfile(fullname):
            return redirect(url_for('downloader', fullname=fullname))
        #  如果是目录,切换到该目录下面
        else:
            os.chdir(fullname)
    current_dir = os.getcwd()
    current_list = os.listdir(current_dir)
    contents = []
    for i in sorted(current_list):
        fullpath = current_dir + os.sep + i
        # 如果是目录,在后面添加一个sep
        if os.path.isdir(fullpath):
            extra = os.sep
        else:
            extra = ''
        content = {}
        content['filename'] = i + extra
        content['mtime'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(os.stat(fullpath).st_mtime))
        content['size'] = str(round(os.path.getsize(fullpath) / 1024)) + 'k'
        contents.append(content)
    return render_template('test.html', contents=contents, subdir=subdir, ossep=os.sep)
 
@app.route('/download/<fullname>')
def downloader(fullname):
    filename = fullname.split(os.sep)[-1]
    dirpath = fullname[:-len(filename)]
    return send_from_directory(dirpath, filename, as_attachment=True)
 
if __name__ == '__main__':
    app.run()

二、html代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文档管理</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="external nofollow" 
       integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
       crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap-theme.min.css" rel="external nofollow" 
       integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp"
       crossorigin="anonymous">
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"
       integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
       crossorigin="anonymous"></script>
    <style type="text/css">
         .big-border {
        background: #fff;
        width: 1400px;
        margin: 0 auto;
        padding: 10px;
        }
 
        body {
            background: #f3f3f3;
        }
 
        .page-title {
            text-align: center;
        }  
    </style>
</head>
<body>
  <div class="big-border">
    <h3 class="page-title">文档管理</h3>
    <hr>
    <h4>当前目录 {{ossep+subdir}}</h4>
    <hr>
    <table width="600px">
      <thead>
        <tr>
          <th>文件或目录名</th>
          <th>修改时间</th>
          <th>大小</th>
        </tr>
      </thead>
      <tbody>
        {% if subdir %}
        <tr>
          <td><a href="../" rel="external nofollow" >..{{ossep}}</a></td>
          <td></td>
          <td></td>
        </tr>
        {% endif %}
        {% for i in contents %}
        <tr>
          <td><a href="{{ url_for('document', subdir=subdir+i.filename) }}" rel="external nofollow" >{{ i.filename }}</a></td>
          <td>{{ i.mtime }}</td>
          <td>{{ i.size }}</td>
          </tr>
        {% endfor %}
      </tbody>
    </table>
    <hr>
  </div>
</body>
</html>

三、使用
1. 更改python代码中的rootdir,这里需要填你所共享的文件夹

2. render_template('test.html', ...),我将html命名为test.html,所以这里就是render_template('test.html', ...),你如果命名了其它名字,这里记得改一下

四、最后效果

运行脚本之后,用浏览器打开 http://127.0.0.1:5000/doc/,显示效果如下图

Python 利用flask搭建一个共享服务器的步骤

Python 利用flask搭建一个共享服务器的步骤

最后欢迎大家使用,和我交流。

以上就是Python 利用flask搭建一个共享服务器的步骤的详细内容,更多关于flask搭建服务器的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python实现监控linux性能及进程消耗性能的方法
Jul 25 Python
python简单猜数游戏实例
Jul 09 Python
python实现汉诺塔递归算法经典案例
Mar 01 Python
python实现多线程抓取知乎用户
Dec 12 Python
python 字典中取值的两种方法小结
Aug 02 Python
Appium Python自动化测试之环境搭建的步骤
Jan 23 Python
python跳出双层for循环的解决方法
Jun 24 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
Jul 25 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
Aug 29 Python
Python倒排索引之查找包含某主题或单词的文件
Nov 13 Python
Python object类中的特殊方法代码讲解
Mar 06 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
Jun 24 Python
快速解决pymongo操作mongodb的时区问题
Dec 05 #Python
pymongo insert_many 批量插入的实例
Dec 05 #Python
python 写一个文件分发小程序
Dec 05 #Python
解决Pymongo insert时会自动添加_id的问题
Dec 05 #Python
用python对oracle进行简单性能测试
Dec 05 #Python
python mongo 向数据中的数组类型新增数据操作
Dec 05 #Python
python自动从arxiv下载paper的示例代码
Dec 05 #Python
You might like
PHP写MySQL数据 实现代码
2009/06/15 PHP
DEDE采集大师官方留后门的删除办法
2011/01/08 PHP
PHP中使用BigMap实例
2015/03/30 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
2015/04/17 PHP
PHP实现的微信APP支付功能示例【基于TP5框架】
2019/09/16 PHP
JavaScript使用位运算符判断奇数和偶数的方法
2015/06/01 Javascript
JavaScript中reduce()方法的使用详解
2015/06/09 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
超详细的JS弹出窗口代码大全
2020/04/18 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
2016/10/05 Javascript
前端主流框架vue学习笔记第二篇
2017/07/26 Javascript
phantomjs导出html到pdf的方法总结
2017/10/19 Javascript
理解Koa2中的async&amp;await的用法
2018/02/05 Javascript
[03:36]DOTA2完美大师赛coL战队趣味视频——我演你猜
2017/11/23 DOTA
Centos5.x下升级python到python2.7版本教程
2015/02/14 Python
Python随机生成身份证号码及校验功能
2018/12/04 Python
Python递归函数实例讲解
2019/02/27 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
2020/06/29 Python
django models里数据表插入数据id自增操作
2020/07/15 Python
CSS3的Border-radius轻松制作圆角
2012/12/24 HTML / CSS
HTML5 Canvas像素处理使用接口介绍
2012/12/02 HTML / CSS
html5录音功能实战示例
2019/03/25 HTML / CSS
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
毕业生自荐信
2013/12/14 职场文书
工程开工庆典邀请函
2014/02/01 职场文书
大学毕业感言50字
2014/02/07 职场文书
竞选班委演讲稿
2014/04/28 职场文书
驾驶员培训方案
2014/05/01 职场文书
五水共治一句话承诺
2014/05/30 职场文书
校园广播稿100字
2014/10/06 职场文书
加强作风建设演讲稿
2014/10/24 职场文书
2015暑假假期总结
2015/07/13 职场文书
2016年九九重阳节活动总结
2016/04/01 职场文书
CSS3 制作的图片滚动效果
2021/04/14 HTML / CSS