使用PUT在webpy中接收xml文件

时间:2012-10-19 15:07:06

标签: python web.py

我正在尝试通过web.py中的PUT接收xml文件,但它无法正常工作。任何人都可以解释下面代码中的问题

import web

urls = (
    '/', 'index'
)

class index:
    def PUT(self):
        postdata = web.data().read()
        fout = open('/home/test/Desktop/e.xml','w')
        fout.write(postdata)
        fout.close()
        return "Hello, world!"

if __name__ == "__main__":
    app = web.application(urls, globals())
    app.run()

我知道这是终端

"HTTP/1.1 PUT /doc.xml" - 404 Not Found

我使用curl上传xml

curl -o log.out -H "Content-type: text/xml; charset=utf-8" -T doc.xml "http://0.0.0.0:8760"

2 个答案:

答案 0 :(得分:0)

您使用了错误的curl选项。

如果您希望文档内容位于请求正文中,则应使用-d代替-T

curl -o log.out -H "Content-type: text/xml; charset=utf-8" -d doc.xml "http://0.0.0.0:8760"

编辑:

无论如何,这会将您的curl转换为POST请求。要将其保持为PUT,请使用-X PUT

curl -X PUT -o log.out -H "Content-type: text/xml; charset=utf-8" -d doc.xml "http://0.0.0.0:8760"

答案 1 :(得分:0)

import web

urls = ( '/upload', 'index')

class index:
    def PUT(self):
        datta = web.data()
        with open("another.xml", "w") as f:
            f.write(datta)
        return "hello"

if __name__ == "__main__":
    app = web.application(urls, globals())
    app.run()

这个卷曲

curl -T somexml.xml http://0.0.0.0:8080/upload

为我工作。我需要更改网址,因为卷曲表现得很奇怪。或许它似乎在我看来。但不知何故,这段代码不能用“/”作为网址。