BY GPT4
我想创建一个图片浏览网站。我的服务器的公网IP是xxxxxxx,我的图片存储在xxxxxxxxxxx的各个子目录中,这个目录可能是嵌套的。我希望用户可以通过网页,方便地浏览、下载该目录下的图片。并且,服务器上的图片经常增加或者更新,我需要保证该网页的实时性,也就是与服务器上的图片情况同步。我希望你用尽可能简单的方式逐步实现,每给出一部分代码都应该有一个可以验证的结果,而不是一次给出所有代码。
好的,我们将逐步创建一个简单的图片浏览网站。首先,我们将使用Python的Flask框架创建一个基本的Web应用程序。为了使用Flask,你需要确保你的服务器上已经安装了Python和Flask。如果没有,请按照以下命令安装:
sudo apt update
sudo apt install python3 python3-pip
pip3 install Flask
现在,我们可以开始创建一个简单的Flask应用程序。在服务器上创建一个新文件app.py
,并添加以下代码:
from flask import Flask, render_template, send_from_directory
app = Flask(__name__)
@app.route('/')
def index():
return "欢迎来到图片浏览网站!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080)
保存文件后,在命令行中输入以下命令运行Flask应用:
python3 app.py
此时,你可以在浏览器中通过服务器的公网IP和端口访问网站,即 http://xxxxxxxxx:8080/,你将看到“欢迎来到图片浏览网站!”的欢迎信息。
在验证了基本的Flask应用程序之后,我们将继续添加功能以显示和下载图片。请让我知道你准备好进行下一步时。
PS. 如果租用阿里云或者腾讯云,需要设置安全组,不然无法正常访问。
我已经准备好进行下一步。
很好,接下来我们将在Flask应用程序中添加功能以浏览和下载图片。
首先,在app.py
同级目录下创建一个名为templates
的文件夹,并在其中创建一个名为index.html
的文件。我们将在这个HTML文件中展示图片。将以下代码添加到index.html
:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>图片浏览网站</title>
</head>
<body>
<h1>图片列表</h1>
<ul>
{% for image in images %}
<li>
<a href="{{ url_for('download_image', path=image.path) }}" target="_blank">
<img src="{{ url_for('download_image', path=image.path) }}" alt="{{ image.name }}" width="200">
</a>
<br>
{{ image.name }}
</li>
{% endfor %}
</ul>
</body>
</html>
然后,更新app.py
文件以包含必要的函数来获取图片列表,以及为模板提供图片数据。我们还将添加一个新的路由来处理图片下载。在app.py
文件中添加以下代码:
import os
from collections import namedtuple
Image = namedtuple('Image', ['name', 'path'])
def get_image_list(base_path):
image_list = []
for root, dirs, files in os.walk(base_path):
for file in files:
if file.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp')):
image_path = os.path.join(root, file)
rel_path = os.path.relpath(image_path, base_path)
image_list.append(Image(name=file, path=rel_path))
return image_list
@app.route('/images')
def images():
base_path = 'xxxxxxxxxxx/outputs'
image_list = get_image_list(base_path)
return render_template('index.html', images=image_list)
@app.route('/download_image/<path:path>')
def download_image(path):
base_path = 'xxxxxxxxxxx/outputs'
return send_from_directory(base_path, path)
现在,重新启动Flask应用程序:
python3 app.py
打开浏览器并访问 http://xxxxxxxxx:8080/images,你将看到`xxxxxxxxxx/outputs`目录下的图片列表。
点击图片,它将在新标签页中打开,用户可以通过右键菜单下载图片。图片列表将根据服务器上的图片实时更新。
这就是一个基本的图片浏览和下载网站。如果你需要添加更多功能或者对页面样式进行调整,请随时告诉我。
标签:浏览,网站,image,简易,Flask,path,app,图片 From: https://www.cnblogs.com/xkxf/p/17368373.html