Python 3.x 是否有一种方法可以使用python on flask framework&;从本地目录中提取所有图像;是否在html图像库网页上显示图像?

Python 3.x 是否有一种方法可以使用python on flask framework&;从本地目录中提取所有图像;是否在html图像库网页上显示图像?,python-3.x,image,flask,directory,Python 3.x,Image,Flask,Directory,实际上,我有一个图像库网页,我想执行两个步骤,即 (1) -我想将图像从网页上载到计算机上的本地目录 (2) -我想将目录中的所有图像显示到我制作为图像库的另一个网页 我已经成功地完成了问题的第一部分,但第二部分困扰着我,我无法实现它,我使用了许多不同的技术,但没有一种有效 那么,有人能给点建议吗, 下面是我使用的上传功能和显示功能 import os from flask import Flask, request, redirect, url_for, send_from_director

实际上,我有一个图像库网页,我想执行两个步骤,即 (1) -我想将图像从网页上载到计算机上的本地目录 (2) -我想将目录中的所有图像显示到我制作为图像库的另一个网页

我已经成功地完成了问题的第一部分,但第二部分困扰着我,我无法实现它,我使用了许多不同的技术,但没有一种有效

那么,有人能给点建议吗, 下面是我使用的上传功能和显示功能

import os
from flask import Flask, request, redirect, url_for, 
send_from_directory,render_template
from werkzeug import secure_filename

UPLOAD_FOLDER = 'E:/os/uploads'
ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])

app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

def allowed_file(filename):
    return '.' in filename and \
        filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS

@app.route('/', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        file = request.files['file']
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
           return redirect(url_for('uploaded_file', filename=filename))
   return '''
   <!doctype html>
   <title>Upload new File</title>
   <h1>Upload new File</h1>
   <form action="" method=post enctype=multipart/form-data>
   <p><input type=file name=file>
      <input type=submit value=Upload>
   </form>
  '''
  @app.route('/show')
  def uploaded_file(filename):
     return render_template('template.html', filename=filename)

  @app.route('/uploads')
  def send_file(filename):
     return send_from_directory(UPLOAD_FOLDER, filename)

  if __name__ == '__main__':
     app.run()
导入操作系统
从烧瓶导入烧瓶,请求,重定向,url_,
从\u目录发送\u,呈现\u模板
从werkzeug导入安全文件名
上传文件夹='E:/os/uploads'
允许的扩展名=set(['txt',pdf',png',jpg',jpeg',gif'])
app=烧瓶(名称)
app.config['UPLOAD\u FOLDER']=UPLOAD\u FOLDER
允许的def_文件(文件名):
在文件名和\
允许的扩展名中的filename.rsplit('.',1)[1]
@app.route('/',方法=['GET','POST'])
def upload_文件():
如果request.method==“POST”:
file=request.files['file']
如果文件和允许的文件(file.filename):
filename=secure\u文件名(file.filename)
保存(os.path.join(app.config['UPLOAD\u FOLDER'],文件名))
返回重定向(url_for('uploaded_file',filename=filename))
返回“”'
上载新文件
上载新文件

'''
@应用程序路径(“/show”)
def上传文件(文件名):
返回渲染模板('template.html',filename=filename)
@app.route(“/uploads”)
def发送文件(文件名):
从目录返回发送目录(上传文件夹,文件名)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app.run()
问题是,它只显示我在该实例中上载的图像,但我想提取多个图像并将它们保存在某种数据结构(如列表)中,然后在html页面上对其进行迭代,并逐个显示图像。请看下面的示例。您可以轻松地将多个文件发送到HTML模板,并且可以在模板中轻松地使用
for
循环,仅迭代图像文件列表并在同一页面上呈现多个图像


Jinja模板-此处为循环示例:

以下是一种可能的方法:

python方面

import glob
# OTHERS IMPORTS

@app.route('/show')
def uploaded_file():
    # this function returns as a list all the files that are in the directory 
    gallery_images = glob.glob('/path/to/your/directory/*')
    print(gallery_images)
    """
        the print will return for example: ['a.png', 'lion.jpg', 'python_logo.jpeg']
    """
    return render_template('template.html', filename=galery_images)
...
<div class="row">
    {% for f in filename %}
        <div class="col-md-4">
            <div class="card">
                <img class="img-responsive" src="{{url_for('static',filename='images/gallery/')}}{{ f }}" width="100px" height="100px">
            </div>
        </div>            
    {% endfor %}
</div>
...
HTML的一方

import glob
# OTHERS IMPORTS

@app.route('/show')
def uploaded_file():
    # this function returns as a list all the files that are in the directory 
    gallery_images = glob.glob('/path/to/your/directory/*')
    print(gallery_images)
    """
        the print will return for example: ['a.png', 'lion.jpg', 'python_logo.jpeg']
    """
    return render_template('template.html', filename=galery_images)
...
<div class="row">
    {% for f in filename %}
        <div class="col-md-4">
            <div class="card">
                <img class="img-responsive" src="{{url_for('static',filename='images/gallery/')}}{{ f }}" width="100px" height="100px">
            </div>
        </div>            
    {% endfor %}
</div>
...
。。。
{文件名%中的f为%0}
{%endfor%}
...

请注意我是如何指定目录的路径的,以及我是如何将它与迭代过程中获得的文件名混合在一起的

@SauravSikdar很高兴能提供帮助。别忘了验证答案并投赞成票。。。