You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.2 KiB
40 lines
1.2 KiB
from flask import Flask, send_from_directory, render_template, jsonify
|
|
import os
|
|
|
|
app = Flask(__name__)
|
|
|
|
# 静态文件主目录
|
|
#loc
|
|
#STATIC_DIR = "/Users/zgz/Documents/images/share/bak"
|
|
#server
|
|
STATIC_DIR = "/mnt/ttings"
|
|
|
|
# 支持的文件类型
|
|
IMAGE_EXTENSIONS = {".jpg", ".jpeg", ".png", ".gif", ".JPG", ".JPEG", ".PNG", ".GIF"}
|
|
VIDEO_EXTENSIONS = {".mp4", ".avi", ".mov", ".wmv", ".m4v", ".mpg"}
|
|
|
|
# 递归获取目录中的所有文件
|
|
def get_files(directory):
|
|
files = []
|
|
for root, _, filenames in os.walk(directory):
|
|
for filename in filenames:
|
|
ext = os.path.splitext(filename)[1].lower()
|
|
if ext in IMAGE_EXTENSIONS or ext in VIDEO_EXTENSIONS:
|
|
relative_path = os.path.relpath(os.path.join(root, filename), STATIC_DIR)
|
|
files.append(relative_path)
|
|
return files
|
|
|
|
@app.route('/')
|
|
def index():
|
|
files = get_files(STATIC_DIR)
|
|
return render_template('index.html', files=files)
|
|
|
|
@app.route('/media/<path:filename>')
|
|
def media(filename):
|
|
# 返回静态文件(支持子目录)
|
|
return send_from_directory(STATIC_DIR, filename)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app.run(host='0.0.0.0', port=8177)
|