Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-Flask:根目录外的静态文件夹_Python_Flask_Wamp - Fatal编程技术网

Python-Flask:根目录外的静态文件夹

Python-Flask:根目录外的静态文件夹,python,flask,wamp,Python,Flask,Wamp,只是为了好玩,我试图了解如何使用Python和Flask创建一个网站。该网站必须在我自己的电脑上运行,我将是唯一的客户。到目前为止,我得到了我想做的大部分工作,但现在我遇到了一个我无法解决的技术问题 在客户端,我想显示服务器返回的图像。在my\uuuu init\uuuuuuuuuupy中,我将app=Flask(\uuuu name\uuuuuuuuuu,static\uurl\u path='/static')放置在我的html文档中。这很有魅力 但事实上,我的图像位于d:\generalo

只是为了好玩,我试图了解如何使用
Python
Flask
创建一个网站。该网站必须在我自己的电脑上运行,我将是唯一的客户。到目前为止,我得到了我想做的大部分工作,但现在我遇到了一个我无法解决的技术问题

在客户端,我想显示服务器返回的图像。在
my\uuuu init\uuuuuuuuuupy
中,我将
app=Flask(\uuuu name\uuuuuuuuuu,static\uurl\u path='/static')
放置在我的html文档
中。这很有魅力

但事实上,我的图像位于
d:\generalogie\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
:URL必须以斜杠开头

我在这里看到了很多类似的问题,但不幸的是,我无法看到如何使用我的具体问题的答案。我是否可以这样配置网站:作为一个用户,我可以要求使用一些或其他
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/alias/*”
别名/adressen“d:/adressen”
选项索引跟随符号链接多视图
允许超越所有
要求所有授权
别名/generalogie“d:/generalogie”
选项索引跟随符号链接多视图
允许超越所有
要求所有授权

服务器及其所有文件位于
c:/wamp64
及其子目录中。但是当我们将
包含在
html
文档中时,这两个图像都能很好地显示出来,尽管它们实际上位于
WAMP
之外很远的地方,甚至在不同的驱动器上。所以我的问题是:我们也可以用
FLASK
来做这件事吗?

所以你需要用你的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
documenten = "d:\genealogie\documenten" 
app = Flask(__name__, static_url_path='documenten')
换句话说,您希望在代码中打开映像(函数、类等),然后根据需要对映像执行任何操作。例如,将其返回给用户

我个人会尝试使用这样的方式:

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
你不能和我一起做这件事

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
documenten = "d:\genealogie\documenten" 
app = Flask(__name__, static_url_path='documenten')
但是为什么呢? 基本上,静态url路径是用户进入浏览器的url。这与服务器上的文件夹结构无关。见鬼,你甚至不需要在你的服务器上有文件夹

internet呈现的结构与文件系统的结构无关。基本上,这是两个完全不同的世界在这里碰撞

URL用于按层次结构构建web,主要处理组织结构(域、子域)。另一方面,文件服务器的结构可以有很多种方式。通常,您希望表示文件的性质和/或文件的年代


顺便说一下,
mkdir
命令创建文件夹,但您已经有了一些

打开目录的想法很好,但是mkdir会创建一个文件夹。只需使用open或其他工具。为什么不将
documenten
作为全局变量,并按照您在flask模板中的建议使用它。谢谢您的回答。我玩了一点
os.open()
,但至今没有成功。此外,我的问题是,我想在服务器目录之外的html文档中打开图像。我对我的问题进行了编辑,使之更清晰。你为什么不能照原样传递图像呢。我修改了我的答案,没问题。把问题标为已回答。并反思URL与服务器文件系统的区别。这不是一个容易的话题。谢谢,这是解决问题的关键。当我想使服务器计算机上的所有目录文件(如
d:\genelogy\documents
)对客户端可用时,我选择一个名称,如
gendocs
,并向
routes.py:
定义gendocs(文件名):
返回发送文件(“d:\genelogy\documents\”+文件名)
。现在在html文档中,我们可以使用类似
的结构。