我正在尝试显示位于不是默认静态文件夹的文件夹中的图像。
我的模板如下:
{% extends "layout.html" %}
{% block body %}
Albums
{% for album in albums %}
<img src="{{ album ['ThumbPath'] }}">
{% endfor %}
{% endblock %}
生成的HTML如下所示:
<!doctype html>
<title>iPhoto</title>
<link rel=stylesheet type=text/css href="/static/style.css">
<div class=page>
<h1>iPhoto</h1>
<img src="/Users/Darrell/Pictures/iPhoto Library/Thumbnails/2013/08/09/20130809-180444/t264vvMaQM+GJosBP+4q+Q/_DSC1225.jpg">
<img src="/Users/Darrell/Pictures/iPhoto Library/Thumbnails/2013/08/09/20130809-181030/urU3jqSKRgGNNP1MjKhpvg/_DSC1268.jpg">
<img src="/Users/Darrell/Pictures/iPhoto Library/Thumbnails/2013/08/09/20130809-181037/1zYyNYReRg+Sizx8v4BUkw/_DSC0923.jpg">
<img src="/Users/Darrell/Pictures/iPhoto Library/Thumbnails/2013/08/09/20130809-181038/sKzEEB3jSf6GBs2heQIviA/Kelly.jpg">
</div>
如何在生成的网页上呈现图像。 图像的路径是正确的。 无法将所有图像复制到静态文件夹。
达雷尔
答案 0 :(得分:4)
看起来你有文件系统路径而不是站点。使用/
启动资源时,路径将从站点根目录开始(站点的绝对路径,不带斜杠或./
或../
是相对的),例如,如果您有站点{{1然后http://test.com
将是/
或http://test.com/
将是/test
。您可以为其他网站设置特定协议http://test.com/test
的路径或当前网站protocol://
的相同路径。您总是可以在浏览器错误控制台中找到错误(完整)网址的错误。
要访问文件系统,您必须使用//
协议,您的网址将与file://
类似。但它只适用于您的计算机,并且可能存在安全问题。您还可以将此文件的符号链接设置为静态文件夹,这样可以解决安全问题,但不能解决仅计算机的问题。要完全解决此问题,请更好地将此文件发布到您的应用程序或公共(私有)Web服务器上以获取图像或其他静态文件。
答案 1 :(得分:1)
这是我的项目path。我编写了一个简单的函数,该函数可以通过使其在网页上呈现而起作用。我不确定百分百部署后是否能正常工作,因此我将对其进行更新。
<img alt="" src="{{ url_for('send_file', filename=image_url) }}" id ="img"/>
这是HTML元素的代码,这是服务器端Python中相应的代码。
def getImageName(x):
"""
Dealing with Unix Path names and Windows PathNames
"""
if platform.system() == 'Linux':
return x[x.rfind("/")+1:]
return x[x.rfind("\\")+1: ]
def getFolder(x):
y = []
if platform.system() == 'Linux':
y = x.split("/")
else:
y = x.split("\\")
# print(y)
cat_name = ""
if "roomImage" in x:
cat_name+="roomImage/" + y[-2]
elif "lobbyImage" in x:
cat_name+="lobbyImage"
elif "miscImage" in x:
cat_name += "miscImage/" + y[-2]
elif "washroomImage" in x:
cat_name += "washroomImage"
else:
cat_name += "facadeImage"
return cat_name + "/"
@app.route("/send_file/<filename>")
def send_file(filename):
return send_from_directory(app.config["UPLOAD_FOLDER"] +"/" + getFolder(filename) , getImageName(filename))
这在大多数情况下都有效。 顺便说一句,image_url应该是图像的绝对路径,您可以将其作为参数通过render_template传递给Jinja2模板,如下所示:
返回render_template(“ / contentpage.html”,image_url = imgurl)
不要忘记导入send_from_directory并将app.config [“ UPLOAD_FOLDER”]设置到适当的目录。这不是最有效的方法