• File Upload Recipe
    • 问题
    • 解决方法
    • 注意

    File Upload Recipe

    问题

    如果你不是很了解表单上传或者CGI的话, 你会觉得文件上传有点奇特.

    解决方法

    1. import web
    2. urls = ('/upload', 'Upload')
    3. class Upload:
    4. def GET(self):
    5. return """<html><head></head><body>
    6. <form method="POST" enctype="multipart/form-data" action="">
    7. <input type="file" name="myfile" />
    8. <br/>
    9. <input type="submit" />
    10. </form>
    11. </body></html>"""
    12. def POST(self):
    13. x = web.input(myfile={})
    14. web.debug(x['myfile'].filename) # 这里是文件名
    15. web.debug(x['myfile'].value) # 这里是文件内容
    16. web.debug(x['myfile'].file.read()) # 或者使用一个文件对象
    17. raise web.seeother('/upload')
    18. if __name__ == "__main__":
    19. app = web.application(urls, globals())
    20. app.run()

    注意

    需要注意以下内容:

    • 表单需要一个enctype=”multipart/form-data”的属性, 否则不会正常工作.
    • 在webpy的代码里, 如果你需要默认值的话, myfile就需要默认值了(myfile={}), 文件会以字符串的形式传输 – 这确实可以工作, 但是你会丢失文件的名称