简易图片浏览网站

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`目录下的图片列表。 

点击图片,它将在新标签页中打开,用户可以通过右键菜单下载图片。图片列表将根据服务器上的图片实时更新。

这就是一个基本的图片浏览和下载网站。如果你需要添加更多功能或者对页面样式进行调整,请随时告诉我。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章