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使用filetype精确判断文件类型
Jul 02 Python
Python实现对一个函数应用多个装饰器的方法示例
Feb 09 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
Jan 17 Python
详解Python中pandas的安装操作说明(傻瓜版)
Apr 08 Python
Python解决pip install时出现的Could not fetch URL问题
Aug 01 Python
flask框架jinja2模板与模板继承实例分析
Aug 01 Python
python对验证码降噪的实现示例代码
Nov 12 Python
如何基于python实现脚本加密
Dec 28 Python
python matplotlib中的subplot函数使用详解
Jan 19 Python
python 函数中的参数类型
Feb 11 Python
python eventlet绿化和patch原理
Nov 21 Python
Python必备技巧之函数的使用详解
Apr 04 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 模拟post_验证页面的返回状态(实例讲解)
2013/10/28 PHP
PHP之uniqid()函数用法
2014/11/03 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
window.onload 加载完毕的问题及解决方案(上)
2009/07/09 Javascript
jQuery调用WebService的实现代码
2011/06/19 Javascript
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
2013/03/25 Javascript
jquery获取div距离窗口和父级dv的距离示例
2013/10/10 Javascript
Jquery EasyUI中弹出确认对话框以及加载效果示例代码
2014/02/13 Javascript
iframe里使用JavaScript控制主页转向的方法
2015/04/03 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
2016/12/07 Javascript
JQueryEasyUI框架下的combobox的取值和绑定的方法
2017/01/22 Javascript
详解微信小程序中组件通讯
2018/10/30 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
vue-以文件流-blob-的形式-下载-导出文件操作
2020/08/07 Javascript
Python利用Beautiful Soup模块创建对象详解
2017/03/27 Python
python的mysqldb安装步骤详解
2017/08/14 Python
Python实现字符串与数组相互转换功能示例
2017/09/22 Python
Linux 修改Python命令的方法示例
2018/12/03 Python
利用Python的folium包绘制城市道路图的实现示例
2020/08/24 Python
4款Python 类型检查工具,你选择哪个呢?
2020/10/30 Python
next在python中返回迭代器的实例方法
2020/12/15 Python
利用CSS3实现毛玻璃效果示例源码
2016/09/25 HTML / CSS
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
请介绍一下Ant
2016/07/22 面试题
个人求职简历的自我评价
2013/10/19 职场文书
个人求职信范文分享
2014/01/31 职场文书
《金钱的魔力》教学反思
2014/02/24 职场文书
询价采购方案
2014/06/09 职场文书
新闻专业毕业生求职信
2014/08/08 职场文书
个人工作表现评价材料
2014/09/21 职场文书
2015年安全生产管理工作总结
2015/05/25 职场文书
Netty分布式客户端处理接入事件handle源码解析
2022/03/25 Java/Android
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技