我有一个zpt(zope页面模板),我想使用视频标签,例如:
<video src="FILE_LOCATION" width="320" height="240" type='video/ogg; codecs="theora, vorbis"' controls></video>
其中FILE_LOCATION是plone的内容类型。我可以使用3种方式来访问文件:
1) file.download_url #gives me: http://localhost:8000/a/acervo/testeflv2/at_download/file
2) file.absolute_url #gives me: http://localhost:8000/a/acervo/testeflv2
3) file.getFile() #gives me the file (like if I open the video file on a text editor)
obs:如果我在浏览器上单击第一个或第二个选项返回的链接,它会从浏览器打开下载窗口以下载文件。
在zpt上,我可以这样做:
<video src="" id="video_play" width="320" height="240" type='video/ogg; codecs="theora, vorbis"' controls
tal:attributes="src python:file.absolute_url()"></video>
其中“python:file.absolut_url()”可以更改为其他选项。
但任何选项都有效。该页面显示了应播放视频的块,但没有播放视频。
我怎样才能做到这一点?
答案 0 :(得分:0)
您可能需要下载链接 - 您需要纯数据,而不是Plone默认视图。
即
<video src="" id="video_play" width="320" height="240" type='video/ogg; codecs="theora, vorbis"' controls tal:attributes="src file/download_url"></video>
如果不起作用:
答案 1 :(得分:0)
主要问题来自'Content-Disposition'标题。这里有一个硬编码ogg / theora格式的例子。 使用以下代码在你的cutom皮肤中创建一个脚本'inline_download':
RESPONSE = container.REQUEST.RESPONSE
filename = context.getFilename()
obj = context.getFile()
RESPONSE.setHeader('Content-Disposition', 'inline;filename="%s"' % filename)
RESPONSE.setHeader('Content-Type', 'video/ogg')
return obj
现在http://yourpath/video/inline_download应该正确显示视频而不需要额外的HTML。
最后在您的视图中添加此代码:
<video height="240px" width="320px" type="video/ogg; codecs='theora, vorbis'"
controls="controls" preloas="none"
tal:attributes="src string:${here/absolute_url}/inline_download"/>