gpt4 book ai didi

python - 使用内置文件表单上传 web.py 文件

转载 作者:太空宇宙 更新时间:2023-11-04 06:42:34 25 4
gpt4 key购买 nike

我正在尝试使用内置输入表单制作一个工作文件上传表单。它适用于“静态”html 输入表单(使用 shutil.copyfileobject),但无法使用内置表单。

import web, shutil
from web import form

urls = ('/', 'Index')

app = web.application(urls, globals())
render = web.template.render('templates/')

fileForm = form.Form(form.File('myfile'))

class Index(object):
def GET(self):
f = fileForm()
return render.index(f)
def POST(self):
f = fileForm()
fi = f['myfile']
mydir = 'uploads/'
shutil.copy(fi, mydir)

if __name__ == "__main__":
app.run()

和模板/index.html

$def with (f)
<!DOCTYPE html>
<html>

<head>

<title>Title</title>

</head>

<body>
<form name="main" method="post" enctype="multipart/form-data" action="">
$:f.render()
<input type="submit">
</form>
</body>

</html>

错误:

<type 'exceptions.TypeError'> at /

coercing to Unicode: need string or buffer, File found


Python
C:\Python27\lib\ntpath.py in abspath, line 486

Web
POST http://localhost:8080/


Traceback (innermost first)
C:\Python27\lib\ntpath.py in abspath
479.
480.else: # use native Windows method on Windows
481. def abspath(path):
482. """Return the absolute version of a path."""
483.
484. if path: # Empty path must return current working directory.
485. try:
486. path = _getfullpathname(path) ...
487. except WindowsError:
488. pass # Bad path - return unchanged.
489. elif isinstance(path, unicode):
490. path = os.getcwdu()
491. else:
492. path = os.getcwd()

内置的 File 似乎没有返回对象,因此 shutil.copyfileobject 似乎不起作用。

请帮我解决一下。

最佳答案

import web, shutil
from web import form

urls = ('/', 'Index')

app = web.application(urls, globals())
render = web.template.render('templates/')

fileForm = form.Form(form.File('myfile'))

class Index(object):
def GET(self):
f = fileForm()
return render.index(f)

def POST(self):
x = web.input(myfile={})
filedir = '/tmp/'
if 'myfile' in x:
filepath=x.myfile.filename.replace('\\','/')
filename=filepath.split('/')[-1]
fout = open(filedir +'/'+ filename,'w')
fout.write(x.myfile.file.read())
fout.close()

if __name__ == "__main__":
app.run()

关于python - 使用内置文件表单上传 web.py 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28944844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com