適用的場景
- 1.公司有從第三方下載文件並解析的業務,你需要測試各種類型的文件\不同格式\不同大小\有缺失等場景,遺憾的是你無法控制第三方幫你製作這些文件,所以你可以自己製作這些文件並搭建一個下載服務器
- 2.你想用微信發一個文件給同事,可是文件超過100M(微信傳輸文件不能超過100兆),QQ可以發但你不用QQ,此時你本地搭建一個下載服務器即可(確保你們在同一個局域網,如: 連接同一個WiFi)
整理思路
- 一個目標文件,如test.zip
- 很方便啓動/停止該服務,並且有基本的錯誤提示
- 一行命令解決!,比如
./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的文件