web.py 如何在网页上上传多个文件并保存在磁盘上?

How to do multiple files upload on webpage and save on disk in web.py?

我正在关注 Zed shaw http://learnpythonthehardway.org/book/ex51.html 的 LPTHW ex51,并且正在 web.py 上做他的学习练习,我是一个 web.py 初学者并且成功地在网页上上传了一张图片表单,然后将其存储在本地文件夹中。问题是我存储的每个图像都替换了较早的图像。我也不知道如何在服务器上上传多张图片并将它们全部存储。

这是我在 class 中上传的 app.py:

class Upload(object):
    def GET(self):
        web.header("Content-Type","text/html; charset=utf-8")
        return render.upload()

    def POST(self):
        x= web.input(myfile={})
        filedir= "C:/Users/tejas/Documents/filesave"
        if 'myfile' in x:
            fout = open(filedir + '/' + 'myfile.jpg', 'wb') # creates the file where the uploaded file should be stored
            fout.write(x.myfile.file.read()) # writes the uploaded file to the newly created file.
            fout.close() # closes the file, upload complete
            return "Success! Your image has been saved in the given folder."
            raise web.seeother('/upload')

和我的上传表格- upload.html :

<html>
    <head><title>

    <div id="header" <h1 style="color:blue;">Upload image file</h1><div/>

    </title></head>

    <body background-color=light-blue,font-family=verdana,font-size=100%;>
        <form method="POST" enctype="multipart/form-data" action="">
        <input type="file" name="myfile"/>

     <br/> <br/><br/>
        <input type="submit"/>
        </form>
        </body>
        </html>

我尝试搜索很多类似的问题,但都在 PHP 中,所以我尝试了一些类似的代码,但我无法让它工作。有什么改进代码的建议吗?

您的代码替换之前的代码的原因是您对保存图像的路径进行了硬编码

fout = open(filedir + '/' + 'myfile.jpg', 'wb')

每次上传要更改的文件都是相同的,这可以通过每次上传新文件时添加新名称或从网络输入中提取名称来更正

fout = open(filedir + '/' + x.myfile.filename, 'wb');

根据python打开写入同名文件时会被擦除 确保您上传的每个新文件的名称都与之前上传的不同