Python Tornado框架中,播放本地文件报错:Not allowed to load local resource

#问题描述
浏览器无法使用本地磁盘文件,如F:\\Video\\Test.mp4,提示错误Not allowed to load local resource

#场景描述
将本地磁盘中的视频通过Python的Tornado框架,在浏览器中播放,前端播放器使用的是Plyr.js,代码如下:

<video id="player" playsinline controls>
  <source src="F:\\Video\\Test.mp4" type="video/mp4" />
</video>

其中F:\\Video\\Test.mp4为本地磁盘文件,但是无法播放,提示Not allowed to load local resource.

在文章

浏览器报错:Not allowed to load local resource 原因及解决办法

中,提到可以用虚拟路径来解决,但是我找了许久,未找到Python、Tornado中映射虚拟路径的方法。

有没有什么方法可以解决这个问题?

在Tornado框架中,可以通过设置静态文件的路径来实现访问本地磁盘文件。具体步骤如下:

在Tornado的应用程序中添加以下代码,指定静态文件的路径:

import os
from tornado.web import Application, RequestHandler, StaticFileHandler

app = Application([
    (r"/static/(.*)", StaticFileHandler, {"path": os.path.join(os.getcwd(), "static")})
])

其中,os.getcwd()用于获取当前工作目录,"static"表示静态文件所在目录的名称。

在浏览器中,将视频文件的src路径设置为"/static/Video/Test.mp4",其中"Video"是静态文件目录下的子目录。

<video id="player" playsinline controls>
  <source src="/static/Video/Test.mp4" type="video/mp4" />
</video>

将视频文件拷贝到静态文件目录下的子目录中。例如,在上述示例中,将视频文件Test.mp4拷贝到静态文件目录下的Video子目录中。
通过以上步骤,就可以在浏览器中访问本地磁盘文件了。需要注意的是,Tornado框架只能访问应用程序指定的静态文件目录下的文件,无法访问其他位置的文件。