2
Я пытаюсь создать рабочую форму для загрузки файлов, используя встроенную форму ввода. Он отлично работает с «статической» формой ввода html (с использованием файла shutil.copyfileobject), но он не будет работать с использованием встроенного.Загрузка файла web.py с использованием встроенного файла Форма
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()
встроенный в файл, кажется, не возвращать объект, так shutil.copyfileobject не кажется, Работа.
Пожалуйста, помогите мне разобраться.
Вы помещаете 'form.Form (form.File ('myfile'))': вы имели в виду просто 'form.File ('myfile')'? –
Ну, это синтаксис: form.Form (форма ввода 1, форма ввода 2). Они вообще не говорят о форме файла на webpy.org, вот где я нашел ее: http://webpy.readthedocs.org/en/latest/api.html#module-web.form ... ........ с использованием вашей версии: Объект файла, который нельзя назвать – ypppy
А, моя ошибка. В качестве второго вопроса: 'shutil.copy' ожидает' fi' (от 'fi = f ['myfile']') как строку (с указанием пути к файлу). На основе [этого примера] (http://webpy.org/cookbook/fileupload), похоже, что это объект File. –