这就是我的项目的文件结构。语音、文本和模板都是文件夹。
我运行python app.py
,当我转到本地主机http://0.0.0.0:8080/
时,我可以看到index.html
页面,其中包含app.py
通过管道输入的内容。
index.html
中有一些文本是通过管道从voice.txt
传入的,如果我在文本编辑器中查看voice.txt
,我可以看到app.py
中的一个循环每隔20秒成功地向其追加更多的文本。
我遇到的问题是试图将更新后的voice.txt
文本放入index.html
的正文中。我正在尝试和XMLHttpRequest一起做这件事。下面是来自index.html
中标记的相关代码
function UpdateText() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function(){
if (this.readyState == 4 && this.status == 200) {
// Code goes here
document.getElementById("main").innerHTML = this.responseText;
console.log(statusText);
console.log(responseText);
}
};
xhttp.open("GET", "../Text/voice.txt", true);
xhttp.send();
};
当我正确运行该index.html
时,但当它尝试更新文本时,我在终端中收到以下错误消息:
127.0.0.1:64013 - - [28/May/2019 00:55:10] "HTTP/1.1 GET /Text/voice.txt" - 404 Not Found
我可能错了,但在这一点上,我相当确定xhttp.open()
中的文件路径实际上应该是一个URL (这是我第一次使用XMLHttpRequest,我看到的每个教程都只有文件名,没有其他内容),在这种情况下,我不确定如何链接到voice.txt
。为此,我使用了web.py库,下面是app.py
的相关部分
urls = (
"/", "index",
)
indexpath = "/Users/[USERNAME]/torch/torch-rnn/voice/Template/"
render = web.template.render(indexpath)
class index(object):
def GET(self):
the_voice = open(voicepath, "r+").read()
return render.index(the_voice)
if __name__ == "__main__":
app = web.application(urls, globals())
app.run()
我觉得解决方案可能涉及到更改urls
或render
变量中的某些内容,但是我已经在这个问题上徘徊了几个小时,我已经没有想法了。
我尝试过的
我的第一个想法是将一个名为voice.txt
的虚拟文件放入index.html
旁边的Template文件夹中,然后更改XMLHttpRequest中的文件路径以反映这一点,但我仍然收到相同的错误消息。
发布于 2019-05-29 13:28:37
您的web服务器只知道一个URL "/
“,并将其作为”https://:8080/'“返回。这就是您在urls =()
代码中列出的所有可能值。
因此,您尝试通过web界面获取任何其他内容都将失败。如果你想让get服务器检索你的voice.txt文件,你需要在urls
中包含它,或者匹配它的东西,然后让那个类获取并发送voice.txt
文件。(请注意,按照myDirectory
的描述,文件本身不在Text
文件夹中,它们可以位于任何位置。)
例如,
urls = ( "/", "index",
"/Text/(.*)", "get_file")
class get_file(object):
def GET(self, filename):
the_file = open(myDirectory + '/' + filename, "r").read()
return the_file
可能会做你想做的(或者给你一些想法)。通过使用urls
中的正则表达式,任何http get,如'/Text/foo','/Text/voice.txt','/Text/ant_eater.jpg‘都会试图读取myDirectory
描述的目录中的文件('foo','voice.txt','ant_eater.jpg'),并将该文件返回给用户。
如果您提供的是不同类型的文件(就像我的示例一样),那么您还应该为内容类型设置头文件,但这是另一个问题。
https://stackoverflow.com/questions/56333686
复制相似问题