打开网站总显示建设中,网站制作首选 新鸿儒,做新闻封面的网站,建设银行官方网站登录电脑版把当前文件夹下的所有文件夹和文件列出来#xff0c;允许点击返回上层目录#xff0c;允许点击文件夹进入下级目录并显示此文件夹内容 允许点击文件进行下载
from flask import Flask, render_template, send_file, request, redirect, url_for
import osapp Flask(__name_…把当前文件夹下的所有文件夹和文件列出来允许点击返回上层目录允许点击文件夹进入下级目录并显示此文件夹内容 允许点击文件进行下载
from flask import Flask, render_template, send_file, request, redirect, url_for
import osapp Flask(__name__)app.route(/)
def index():files, folder_names, folder_name getfile()return render_template(index.html, filesfiles, folder_namesfolder_names, folder_namefolder_name)app.route(/download/file_name)
def download_file(file_name):return send_file(file_name, as_attachmentTrue)app.route(/show_folder/folder_name)
def show_folder(folder_name):files, folder_names, folder_name getfile(folder_name)return render_template(index.html, filesfiles, folder_namesfolder_names, folder_namefolder_name)# 这里是返回上一级的目录
app.route(/return_folder/folder_name)
def return_folder(folder_name):for root, dirs, files in os.walk(os.getcwd(), topdownTrue):for dir in dirs:if folder_name dir:folder_name os.path.relpath(root, startos.getcwd())if folder_name .:folder_name files, folder_names, folder_name getfile(folder_name)return render_template(index.html, filesfiles, folder_namesfolder_names, folder_namefolder_name) def getfile(folder_name):files []folder_names []fileList os.listdir(os.path.join(os.getcwd(), folder_name))for file in fileList:if os.path.isfile(file):files.append(file)else:folder_names.append(file)return files, folder_names, folder_name!DOCTYPE html
html langen
headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleFolder Viewer/title
/head
bodyh1Folder Viewer/h1
{% if folder_name or folder_name %}{% if folder_name %}p当前路径/p{% else %}p当前路径:/plia href{{ url_for(return_folder, folder_namefolder_name) }}返回{{ folder_name }}/a/li{% endif %}form methodpost enctypemultipart/form-datainput typefile namefileinput typesubmit valueUpload/formul{% for filename in files %}lia href{{ url_for(download_file, file_namefilename) }} download{{ filename }}/a/li{% endfor %}{% for foldername in folder_names %}lia href{{ url_for(show_folder, folder_namefoldername) }}{{ foldername }}/a/li{% endfor %}/ul
{% else %}pNo folder selected/p
{% endif %}/body
/html
效果 主页面 子目录 点击返回可以返回上层目录
Bug: 目前在子目录没办法下载
问题原因
lia href{{ url_for(download_file, file_namefilename) }} download{{ filename }}/a/li这里的定义的路径不支持下载子目录的文件需要优化 file_name把子目录的路径包含进去