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 09 Python
python base64 decode incorrect padding错误解决方法
Jan 08 Python
python图像处理之镜像实现方法
May 30 Python
Python实现的概率分布运算操作示例
Aug 14 Python
Linux CentOS7下安装python3 的方法
Jan 21 Python
Python实现OpenCV的安装与使用示例
Mar 30 Python
使用Python快乐学数学Github万星神器Manim简介
Aug 07 Python
python selenium循环登陆网站的实现
Nov 04 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
Feb 07 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
Aug 04 Python
python 实现体质指数BMI计算
May 26 Python
分享3个非常实用的 Python 模块
Mar 03 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在线生成二维码代码(google api)
2013/06/03 PHP
解决file_get_contents无法请求https连接的方法
2013/12/17 PHP
Zend Framework创建自己的动作助手详解
2016/03/05 PHP
Discuz论坛密码与密保加密规则
2016/12/19 PHP
pjblog中的UBBCode.js
2007/04/25 Javascript
基于jQuery的合并表格中相同文本的相邻单元格的代码
2011/04/06 Javascript
通过一段代码简单说js中的this的使用
2013/07/23 Javascript
JS判断文本框内容改变事件的简单实例
2014/03/07 Javascript
用JavaScript实现PHP的urlencode与urldecode函数
2015/08/13 Javascript
jQuery实现自定义右键菜单的树状菜单效果
2015/09/02 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
2016/11/25 Javascript
javascript 组合按键事件监听实现代码
2017/02/21 Javascript
vue.js分页中单击页码更换页面内容的方法(配合spring springmvc)
2018/02/10 Javascript
layui table 表格模板按钮的实例代码
2019/09/21 Javascript
python sys模块sys.path使用方法示例
2013/12/04 Python
Pyhthon中使用compileall模块编译源文件为pyc文件
2015/04/28 Python
Python设计实现的计算器功能完整实例
2017/08/18 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
Django中使用Celery的教程详解
2018/08/24 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
python正则表达式匹配不包含某几个字符的字符串方法
2019/07/23 Python
Django数据结果集序列化并展示实现过程
2020/04/22 Python
读取nii或nii.gz文件中的信息即输出图像操作
2020/07/01 Python
Django-imagekit的使用详解
2020/07/06 Python
python类共享变量操作
2020/09/03 Python
css3实现背景颜色渐变让图片不再是唯一的实现方式
2012/12/18 HTML / CSS
构造器Constructor是否可被override?
2013/08/06 面试题
简述网络文件系统NFS,并说明其作用
2016/10/19 面试题
绘画专业自荐信范文
2014/02/23 职场文书
查摆问题对照检查材料
2014/08/28 职场文书
我的法兰西岁月观后感
2015/06/09 职场文书
有关三国演义的读书笔记
2015/06/25 职场文书
《花钟》教学反思
2016/02/17 职场文书
利用python实时刷新基金估值(摸鱼小工具)
2021/09/15 Python
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers
科学家测试在太空中培育人造肉,用于未来太空旅行
2022/04/29 数码科技