Ответ 1
Я все еще новичок в Python и пробовал использовать тот же код, который вы добавили в свой пост. Единственная проблема заключается в том, что он позволяет загружать только один файл. Я хотел загрузить несколько файлов за раз.
Используя все еще доступный код, найденный здесь, вы можете заменить метод deal_post_data
следующим образом:
form = cgi.FieldStorage(
fp=self.rfile,
headers=self.headers,
environ={'REQUEST_METHOD':'POST'})
self.send_response(200)
self.end_headers()
saved_fns = ""
try:
if isinstance(form['file'], list):
for f in form['file']:
print f.filename
saved_fns = saved_fns + ", " + f.filename
self.save_file(f)
self.wfile.write(f.value)
else:
f = form['file']
self.save_file(f)
saved_fns = saved_fns + f.filename
self.wfile.write(f.value)
return (True, "File(s) '%s' upload success!" % saved_fns)
except IOError:
return (False, "Can't create file to write, do you have permission to write?")
Затем добавьте следующую функцию для сохранения загруженного файла:
def save_file(self, file):
outpath = os.path.join("", file.filename)
with open(outpath, 'wb') as fout:
shutil.copyfileobj(file.file, fout, 100000)
Наконец, измените форму html, чтобы одновременно загружать несколько файлов, используя тег multiple
во вставленном HTML.
Я только что закончил тестирование, и он отлично работает.
Надеюсь, что это полезно