python 写一个基于flask的下载服务器

适用的场景

  • 1.公司有从第三方下载文件并解析的业务,你需要测试各种类型的文件\不同格式\不同大小\有缺失等场景,遗憾的是你无法控制第三方帮你制作这些文件,所以你可以自己制作这些文件并搭建一个下载服务器
  • 2.你想用微信发一个文件给同事,可是文件超过100M(微信传输文件不能超过100兆),QQ可以发但你不用QQ,此时你本地搭建一个下载服务器即可(确保你们在同一个局域网,如: 连接同一个WiFi)

整理思路

  1. 一个目标文件,如test.zip
  2. 很方便启动/停止该服务,并且有基本的错误提示
  3. 一行命令解决!,比如./download_server.py test.zip

放码过来

1. 创建download_server.py文件:

在CentOS 7.4下编写和自测,其他环境运行时请注意python需要装有flask库

#!/usr/bin/env python
#coding=utf-8

import sys
import os
from flask import Flask, render_template, send_from_directory, make_response

app = Flask(__name__)
file_name = sys.argv[1]
@app.route('/', methods=['GET'])
def index():
        down_url = "http://127.0.0.1:5000/{}".format(file_name)
        return '<html><body><h1>Download Server</h1><a href="{0}">{0}</a></body></html>'.format(down_url)

@app.route('/'+file_name, methods=['GET'])
def down():
        exec_path = os.getcwd()
        file_path = '/'.join([exec_path,file_name])
        if os.path.exists(file_path):
                return make_response(send_from_directory('./', file_name, as_attachment=True))
        else:
                return '{}目录下没有找到名称为{}的文件'.format(exec_path,file_name)

if __name__ == "__main__":
        app.run(host='0.0.0.0',port='5000', debug=False)
2. 本地运行脚本,执行命令./download_server.py test.zip
[root@TestSystem ~]# ./download_server.py test.zip
 * Serving Flask app "download_server" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
3. 打开网站,链接是http://127.0.0.1:5000 (如果其他人需要访问,请替换为你的内网ip,端口不动)

在这里插入图片描述

4. 下载测试,点击文件下载的URL

在这里插入图片描述

异常测试:

1. 关闭服务器, 尝试用一个不存在的文件启动
# 关闭服务器:
# 快捷键 Ctrl + C

# 启动:
[root@TestSystem ~]# ./download_server.py aaa.zip
当前目录下没有找到名称为aaa.zip的文件
2.服务正常运行中,但文件被其他用户删除了

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木法星人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值