首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >即使文件存在,XMLHttpRequest也返回404

即使文件存在,XMLHttpRequest也返回404
EN

Stack Overflow用户
提问于 2019-05-28 08:19:26
回答 1查看 534关注 0票数 0

这就是我的项目的文件结构。语音、文本和模板都是文件夹。

我运行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中标记的相关代码

代码语言:javascript
复制
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时,但当它尝试更新文本时,我在终端中收到以下错误消息:

代码语言:javascript
复制
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的相关部分

代码语言:javascript
复制
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()

我觉得解决方案可能涉及到更改urlsrender变量中的某些内容,但是我已经在这个问题上徘徊了几个小时,我已经没有想法了。

我尝试过的

我的第一个想法是将一个名为voice.txt的虚拟文件放入index.html旁边的Template文件夹中,然后更改XMLHttpRequest中的文件路径以反映这一点,但我仍然收到相同的错误消息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-29 13:28:37

您的web服务器只知道一个URL "/“,并将其作为”https://:8080/'“返回。这就是您在urls =()代码中列出的所有可能值。

因此,您尝试通过web界面获取任何其他内容都将失败。如果你想让get服务器检索你的voice.txt文件,你需要在urls中包含它,或者匹配它的东西,然后让那个类获取并发送voice.txt文件。(请注意,按照myDirectory的描述,文件本身不在Text文件夹中,它们可以位于任何位置。)

例如,

代码语言:javascript
复制
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'),并将该文件返回给用户。

如果您提供的是不同类型的文件(就像我的示例一样),那么您还应该为内容类型设置头文件,但这是另一个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56333686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档