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中多线程及程序锁浅析
Jan 21 Python
Python操作MongoDB数据库PyMongo库使用方法
Apr 27 Python
Python进程间通信用法实例
Jun 04 Python
Python中字符串格式化str.format的详细介绍
Feb 17 Python
解决pandas中读取中文名称的csv文件报错的问题
Jul 04 Python
示例详解Python3 or Python2 两者之间的差异
Aug 23 Python
梅尔倒谱系数(MFCC)实现
Jun 19 Python
Python3 chardet模块查看编码格式的例子
Aug 14 Python
pytorch多进程加速及代码优化方法
Aug 19 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
May 04 Python
python re模块常见用法例举
Mar 01 Python
python脚本框架webpy的url映射详解
Nov 20 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
解析VS2010利用VS.PHP插件调试PHP的方法
2013/07/19 PHP
CI框架中通过hook的方式实现简单的权限控制
2015/01/07 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
2015/12/20 PHP
基于jquery的文章中所有图片width大小批量设置方法
2013/08/01 Javascript
jQuery操作input值的各种方法总结
2013/11/21 Javascript
extjs 分页使用jsp传递数据示例
2014/07/29 Javascript
初始Nodejs
2014/11/08 NodeJs
windows8.1+iis8.5下安装node.js开发环境
2014/12/12 Javascript
JS中dom0级事件和dom2级事件的区别介绍
2016/05/05 Javascript
JavaScript核心语法总结(推荐)
2016/06/02 Javascript
解析JavaScript中的字符串类型与字符编码支持
2016/06/24 Javascript
详解React Native网络请求fetch简单封装
2017/08/10 Javascript
jquery之基本选择器practice(实例讲解)
2017/09/30 jQuery
微信小程序实现无限滚动列表
2020/05/29 Javascript
用Vue.js方法创建模板并使用多个模板合成
2019/06/28 Javascript
微信小程序日历插件代码实例
2019/12/04 Javascript
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
2014/06/09 Python
python嵌套函数使用外部函数变量的方法(Python2和Python3)
2016/01/31 Python
Python列出一个文件夹及其子目录的所有文件
2016/06/30 Python
浅谈python import引入不同路径下的模块
2017/07/11 Python
Python统计单词出现的次数
2018/04/04 Python
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
对python抓取需要登录网站数据的方法详解
2018/05/21 Python
Python3.6.0+opencv3.3.0人脸检测示例
2018/05/25 Python
使用python绘制二元函数图像的实例
2019/02/12 Python
PyQt5实现简单数据标注工具
2019/03/18 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
2019/06/18 Python
Python通过递归获取目录下指定文件代码实例
2019/11/07 Python
python上selenium的弹框操作实现
2020/07/13 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
2020/11/02 Python
Pycharm plot独立窗口显示的操作
2020/12/11 Python
AHAVA美国官方网站:死海海泥护肤品牌
2016/10/18 全球购物
Fnac西班牙官网:法国文化和电子产品零售商
2021/03/14 全球购物
园艺师求职信
2014/04/27 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
2015年中秋节演讲稿
2015/03/20 职场文书