仅出于娱乐目的,我试图了解如何使用Python
和Flask
创建网站。该网站必须在我自己的计算机上运行,并且我将是唯一的客户端。到目前为止,我有很多想做的事情,但是现在我遇到了一个我无法解决的技术问题。
在客户端,我想显示服务器返回的图像。在my __init__.py
中放置了app = Flask(__name__, static_url_path='/static')
,并在html文档<img src="/static/images/2012035.jpg" height="150px">
中放置了。就像魅力一样。
但是实际上,我的图像位于应用程序目录之外的目录d:\genealogie\documenten
中,并且我不想将超过2000个文件复制到目录static/images
中。
我尝试过:
documenten = "d:\genealogie\documenten"
os.mkdir(documenten)
由于目录已存在,因此会给出WinError 183
。
我也尝试过:
documenten = "d:\genealogie\documenten"
app = Flask(__name__, static_url_path='documenten')
给出ValueError
:网址必须以斜杠开头。
我在这里看到了很多类似的问题,但是不幸的是,我无法看到如何将答案用于特定问题。我是否可以以一种用户可以要求说<img src="documenten/2012035.jpg" height="150px">
的方式配置网站,也许可以使用一些localhost
前缀?我们非常感谢您的帮助。
编辑
我想要做的是让服务器访问服务器目录之外的目录。也许我可以通过展示如何轻松完成WAMP
来说明这一点。在那里,我们只需要向文件httpd.conf
添加几行。例如:
Include "C:/wamp64/alias/*"
Alias /adressen "d:/adressen"
<Directory "d:/adressen">
Options Indexes FollowSymLinks Multiviews
AllowOverride all
Require all granted
</Directory>
Alias /genealogie "d:/genealogie"
<Directory "d:/genealogie">
Options Indexes FollowSymLinks Multiviews
AllowOverride all
Require all granted
</Directory>
服务器及其所有文件位于c:/wamp64
及其子目录中。但是,当我们在<img src="http://localhost/genealogie/documenten/doc1064.jpg">
文档中包含<img src="http://localhost/adressen/doc5127.jpg">
和html
时,尽管实际上它们位于WAMP
的外面,甚至在不同的驱动器上,但实际上都能很好地显示两个图像。所以我的问题是:我们也可以用FLASK
来做到这一点吗?
答案 0 :(得分:0)
所以您需要使用python代码打开文件夹,提取正确的图片并将其发送给用户?
您可以使用
file = "d:\genealogie\documenten\your_file_name" #you may consider a path library so you can do this in windows or Linux
os.open(file) #you should really use a image library here. open is just a placeholder
换句话说,您想在代码中打开图像(函数,类等),然后对图像进行任何所需的操作。例如,将其返回给用户。
我个人会尝试使用类似这样的东西:
from flask import send_file
file = "d:\genealogie\documenten\your_file_name" #you may consider a path library so you can do this in windows or Linux
return send_file(file, mimetype='image/jpg') #in case of jpg image, you may opt to not use the mimetype
您无法使用
documenten = "d:\genealogie\documenten"
app = Flask(__name__, static_url_path='documenten')
但是为什么呢?
基本上,static_url_path
是用户输入浏览器的URL。这与服务器上的文件夹结构无关。哎呀,您甚至不需要在服务器上拥有文件夹。
您的Internet呈现的结构不必与文件系统的结构相关。基本上,这是两个完全不同的世界,在这里发生碰撞。
URL用于分层组织网络,主要用于处理组织结构(域,子域)。另一方面,文件服务器可以通过很多方式进行结构化。通常,您要代表文件的性质和/或文件的年龄。
顺便说一句,mkdir
命令创建了文件夹,但是您已经有了一些文件夹。