我有一个渲染 Flask 应用程序,我使用渲染永久磁盘 (/var/static/uploads) 来存储上传的图像,图像已上传,但我在 html 模板上渲染它们时遇到问题。
def save_image(image_data):
filename = generate_unique_filename(image_data.filename)
static_uploads_folder = os.path.join('/var/static/uploads')
image_data.save(os.path.join(static_uploads_folder, filename))
return filename
def generate_unique_filename(original_filename):
filename, extension = os.path.splitext(original_filename)
timestamp = datetime.utcnow().strftime('%Y%m%d%H%M%S')
unique_filename = f"{secure_filename(filename)}_{timestamp}{extension}"
return unique_filename
模板
<div class="row row-cols-2 row-cols-sm-2 row-cols-md-3 row-cols-lg-4">
{% for product in products %}
<div class="col">
<div class="card product-card border-0">
<div class="magnifier position-relative overflow-hidden">
{% if product.cover_image %}
<img src="/static/uploads/{{ product.cover_image }}" class="card-img-top product-image" alt="{{ product.name }}">
{% else %}
<img src="/static/path_to_default_image.jpg" class="card-img-top product-image" alt="{{ product.name }}">
{% endif %}
</div>
<div class="card-body text-center">
<h6 class="card-title text-primary mb-2">{{ product.brand }}</h6>
<p class="card-text text-muted fs-6 mb-3">{{ product.description | truncate(120) }}</p>
<p class="card-text fs-6 mb-2"><strong>Ksh {{ product.unit_price }} </strong></p>
<!-- Add to Cart Button -->
<button type="button" class="btn btn-success btn-sm fs-6" data-bs-toggle="modal" data-bs-target="#addToCartModal{{ product.id }}">
Buy
</button>
</div>
</div>
</div>
{% endfor %}
</div>
我还配置了静态文件夹我不知道做错了什么
app.static_folder = '/var/static/uploads'
我创建了静态文件夹并将图像上传到永久磁盘 /var/static/uploads 成功,现在我在检索图像时遇到问题。
render@srv-cnn0go8cmk4c73ak6cf0-0:~/project/src$ cd /
render@srv-cnn0go8cmk4c73ak6cf0-0:/$ ls var/static/uploads
1000213051_20240429222907.png PhotoRoom-20240123_105100_5_20240429214709.png
1000216424_20240429211503.jpg PhotoRoom-20240123_105100_6_20240429214709.png
1000216434_20240429211503.jpg PhotoRoom-20240123_105100_7_20240429214709.png
1000216446_20240429211503.jpg PhotoRoom-20240123_105101_9_20240429222907.png
1000217105_20240429211503.jpg PhotoRoom-20240123_105102_10_20240429222907.png
PhotoRoom-20240112_080418_20240429224147.png PhotoRoom-20240123_114305_3_20240429223934.png
PhotoRoom-20240114_081108_20240429224147.png PhotoRoom-20240312_191315_20240429223357.png
PhotoRoom-20240114_082716_20240429224147.png PhotoRoom-20240312_192344_1_20240429223357.png
PhotoRoom-20240114_104057_2_20240429223934.png PhotoRoom-20240312_192344_3_20240429223635.png
PhotoRoom-20240123_105059_2_20240429214709.png
您的模板调用
<img src="/static/uploads/{{ product.cover_image }}"
,而您的静态文件夹定义为 app.static_folder = '/var/static/uploads'
。
考虑使用 src="{{ url_for('static', filename=filename) }}"
看看情况是否有所改善。确保在您的 from flask import url_for
中添加
views.py