Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.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
Javascript 自动重新加载Flask服务器中的FTP内容_Javascript_Python_Html_Flask_Ftp - Fatal编程技术网

Javascript 自动重新加载Flask服务器中的FTP内容

Javascript 自动重新加载Flask服务器中的FTP内容,javascript,python,html,flask,ftp,Javascript,Python,Html,Flask,Ftp,我使用flask服务器从FTP服务器中提取数据并提供服务(视频)。 摄像机在向远程FTP服务器发送新视频时向flask服务器显示“OK”。Flask服务器从FTP中提取新视频。 我需要的是,当flask运行get_video函数时,还要刷新html的内容,以便用户可以看到新的视频 请注意,摄像头和用户是不同的客户端,它们都连接到同一个Flask服务器 from flask import Flask, Response, request, render_template, g, redirect

我使用flask服务器从FTP服务器中提取数据并提供服务(视频)。 摄像机在向远程FTP服务器发送新视频时向flask服务器显示“OK”。Flask服务器从FTP中提取新视频。 我需要的是,当flask运行get_video函数时,还要刷新html的内容,以便用户可以看到新的视频

请注意,摄像头和用户是不同的客户端,它们都连接到同一个Flask服务器

from flask import Flask, Response, request, render_template, g, redirect
import ftplib
app = Flask(__name__)

def get_video():
    session = ftplib.FTP("****", "*****", "****")
    session.retrbinary("RETR try.mp4", open("static/sc.mp4", "wb+").write)

@app.route('/')
def hello():
     get_video()
     return '''
    <!doctype html>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <title>Files</title>
    <h1>VIDEO</h1>
    <video width="320" height="240" id="VideoWindow" controls>
        <source src="static/sc.mp4" type="video/mp4">
        Your browser does not support the video tag.
    </video>
    </form>
    <form action="/shoot_request">
    <input type="submit" name="shoot" value="GetNew"/>
    </form>
    <script type='text/javascript'>
    $(document).ready(function () {
    setInterval(function () {
        $('#VideoWindow').load(window.location.href + '#VideoWindow');
    }, 5000);
    });
    </script>
    '''
@app.after_request    # This did not work
    def add_header(response):
        response.cache_control.max_age = 10
    return response
从烧瓶导入烧瓶,响应,请求,呈现模板,g,重定向
进口ftplib
app=烧瓶(名称)
def get_video():
session=ftplib.FTP(“****”、“****”、“****”)
session.retrbinary(“RETR try.mp4”,open(“static/sc.mp4”,“wb+”)。write)
@应用程序路径(“/”)
def hello():
获取视频()
返回“”'
文件夹
视频
您的浏览器不支持视频标记。
$(文档).ready(函数(){
setInterval(函数(){
$('#VideoWindow').load(window.location.href+'#VideoWindow');
}, 5000);
});
'''
@app.after#u request#这不起作用
def添加_标题(响应):
response.cache\u control.max\u age=10
返回响应

我创建了一个标志文件。摄像头和html脚本定期从服务器请求文件的值。若它是一个特殊值,摄像机开始记录并通过FTP发送它,然后服务器将标志的值更改为另一个值。若html脚本获得该值,它将重新加载自身,服务器将标志的值更改为默认值

我还在视频链接的末尾添加了随机时间戳 例如:

"<video src="dynamic/sc.mp4?t=%d" type="video/mp4" controls> </video>" % random_value
“”%random\u值
因为浏览器不想重新加载视频,因为它的路径没有改变

无论如何,如果任何人需要这样的东西,可以使用这种方法。不是100%的效率,但它可以工作

问候


Suat

我创建了一个标志文件。摄像头和html脚本定期从服务器请求文件的值。若它是一个特殊值,摄像机开始记录并通过FTP发送它,然后服务器将标志的值更改为另一个值。若html脚本获得该值,它将重新加载自身,服务器将标志的值更改为默认值

我还在视频链接的末尾添加了随机时间戳 例如:

"<video src="dynamic/sc.mp4?t=%d" type="video/mp4" controls> </video>" % random_value
“”%random\u值
因为浏览器不想重新加载视频,因为它的路径没有改变

无论如何,如果任何人需要这样的东西,可以使用这种方法。不是100%的效率,但它可以工作

问候

酸溜溜