import os
from flask import Flask, render_template, url_for, redirect, send_from_directory
import xml.dom.minidom
app = Flask(__name__)
root_dir = r'E:\job\hy'
@app.route('/hy')
def index():
files = os.listdir(root_dir)
isdir_list = gen_isdir_list(root_dir)
return render_template("files_list.html", files=files, isdir_list=isdir_list)
@app.route('/<path:sub_dir>')
def sub_dir1_page(sub_dir):
dir_name = root_dir + '/' + sub_dir
files = os.listdir(dir_name)
isdir_list = gen_isdir_list(dir_name)
return render_template("files_list.html", files=files, isdir_list=isdir_list)
@app.route('/<path:sub_dir1>/<path:sub_dir2>')
def sub_dir2_page(sub_dir1, sub_dir2):
dir_name = root_dir + '/' + sub_dir1 + '/' + sub_dir2
files = os.listdir(dir_name)
isdir_list = gen_isdir_list(dir_name)
return render_template("files_list.html", files=files, isdir_list=isdir_list)
@app.route('/<filename>')
def download_root(filename):
return send_from_directory(root_dir, filename)
@app.route('/<path:sub_dir>/<filename>')
def download_subdir1(sub_dir, filename):
dir_name = root_dir + '/' + sub_dir
return send_from_directory(dir_name, filename)
@app.route('/<path:sub_dir1>/<path:sub_dir2>/<filename>')
def download_subdir2(sub_dir1, sub_dir2, filename):
dir_name = root_dir + '/' + sub_dir1 + '/' + sub_dir2
return send_from_directory(dir_name, filename)
def gen_isdir_list(dir_name):
files = os.listdir(dir_name)
isdir_list = []
for f in files:
if os.path.isdir(dir_name + '/' + f):
isdir_list.append(True)
else:
isdir_list.append(False)
return isdir_list
if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0',port=5000)
<!doctype html>
<title>Download</title>
<h1>Directory listing</h1>
<hr>
<ul>
{% for file in files %}
{% if isdir_list[loop.index0] %}
<li><a href="{{file + '\\'}}">{{file+ '\\'}}</a></li>
{% else %}
<li><a href="{{file}}">{{file}}</a></li>
{% endif %}
{% endfor %}
</ul>