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海龟绘图实例教程
Jul 24 Python
python使用chardet判断字符串编码的方法
Mar 13 Python
Python 创建子进程模块subprocess详解
Apr 08 Python
解决python3 json数据包含中文的读写问题
May 10 Python
Python实现的从右到左字符串替换方法示例
Jul 06 Python
详解python分布式进程
Oct 08 Python
Python常用爬虫代码总结方便查询
Feb 25 Python
对python tkinter窗口弹出置顶的方法详解
Jun 14 Python
django的ORM操作 增加和查询
Jul 26 Python
keras 自定义loss层+接受输入实例
Jun 28 Python
Python实时监控网站浏览记录实现过程详解
Jul 14 Python
Python快速优雅的批量修改Word文档样式
May 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
收集的DedeCMS一些使用经验
2007/03/17 PHP
php更新mysql后获取影响的行数发生异常解决方法
2013/03/28 PHP
php获取从html表单传递数组的方法
2015/03/20 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
浅谈关于PHP解决图片无损压缩的问题
2017/09/01 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
php实现的数组转xml案例分析
2019/09/28 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
仿百度的关键词匹配搜索示例
2013/09/25 Javascript
用js实现in_array的方法
2013/11/05 Javascript
js实现文本框中焦点在最后位置
2014/03/04 Javascript
JavaScript代码复用模式详解
2014/11/07 Javascript
关于Javascript加载执行优化的研究报告
2014/12/16 Javascript
JavaScript实现Iterator模式实例分析
2015/06/09 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
js中判断变量类型函数typeof的用法总结
2016/08/09 Javascript
微信小程序 教程之wxapp视图容器 scroll-view
2016/10/19 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
JavaScript组成、引入、输出、运算符基础知识讲解
2016/12/08 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
微信小程序商城项目之购物数量加减(3)
2017/04/17 Javascript
详解vue.js的devtools安装
2017/05/26 Javascript
vue+vux实现移动端文件上传样式
2017/07/28 Javascript
vue中的provide/inject的学习使用
2018/05/09 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
微信小程序组件传值图示过程详解
2019/07/31 Javascript
解决python彩色螺旋线绘制引发的问题
2019/11/23 Python
python 递归调用返回None的问题及解决方法
2020/03/16 Python
pandas分组聚合详解
2020/04/10 Python
python实现单机五子棋
2020/08/28 Python
香港唯港荟酒店预订:Hotel ICON
2018/03/27 全球购物
经济管理专业自荐信
2013/12/30 职场文书
管理失职检讨书
2014/02/12 职场文书
七一党日活动总结
2014/07/08 职场文书
写给老婆的保证书
2015/02/27 职场文书
公司市场部岗位职责
2015/04/15 职场文书