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中实现参数类型检查的简单方法
Apr 21 Python
Python第三方库的安装方法总结
Jun 06 Python
Python实现对百度云的文件上传(实例讲解)
Oct 21 Python
python ansible服务及剧本编写
Dec 29 Python
python sys.argv[]用法实例详解
May 25 Python
python dlib人脸识别代码实例
Apr 04 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
Aug 26 Python
Python 函数绘图及函数图像微分与积分
Nov 20 Python
python文件处理fileinput使用方法详解
Jan 02 Python
Python中求对数方法总结
Mar 10 Python
Python startswith()和endswith() 方法原理解析
Apr 28 Python
Django 解决由save方法引发的错误
May 21 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错误日志 display_errors与log_errors的区别
2012/10/09 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
php模板引擎技术简单实现
2016/03/15 PHP
PHP给文字内容中的关键字进行套红处理
2016/04/12 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
PHP中实现中文字串截取无乱码的解决方法
2018/05/29 PHP
PHP模型Model类封装数据库操作示例
2019/03/14 PHP
jquery 选择器部分整理
2009/10/28 Javascript
javascript &amp;&amp;和||运算法的另类使用技巧
2009/11/28 Javascript
Jquery Validation插件防止重复提交表单的解决方法
2010/03/05 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
2014/11/28 Javascript
浅谈js里面的InttoStr和StrtoInt
2016/06/14 Javascript
Vue 实用分页paging实例代码
2017/04/12 Javascript
vue slots 组件的组合/分发实例
2018/09/06 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变rgba的a值实现)
2019/01/24 Javascript
javascript绘制简单钟表效果
2020/04/07 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
JavaScript中arguments的使用方法详解
2020/12/20 Javascript
nestjs返回给前端数据格式的封装实现
2021/02/22 Javascript
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
讲解Python中的递归函数
2015/04/27 Python
详解Django框架中的视图级缓存
2015/07/23 Python
python 常用的基础函数
2018/07/10 Python
python实现淘宝秒杀脚本
2020/06/23 Python
django项目登录中使用图片验证码的实现方法
2019/08/15 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
2019/08/26 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
2020/05/12 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
世界上最全面的汽车零部件和配件集合:JC Whitney
2016/09/04 全球购物
Java的for语句中break, continue和return的区别
2013/12/19 面试题
2014年迎新年联欢会活动策划方案
2014/02/26 职场文书
开门红主持词
2014/04/02 职场文书
关于环保的建议书
2014/05/12 职场文书
小学假期安全广播稿
2014/09/28 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
校园环境卫生倡议书
2015/04/29 职场文书