Я недавно разработал диалоговое окно загрузки, поддерживаемое PyCURL, которое я использую в нескольких своих приложениях.
Я столкнулся с проблемой при настройке опции HTTPPOST в pycurl.Я устанавливаю это так:
self.curl.setopt (self.curl.HTTPPOST, [(field, (self.curl.FORM_FILE, filename))]))) 1003 * Если filename является строкой, все в порядке,Однако, если я передаю код Unicode, он вызывает ошибку TypeError.Есть ли способ для меня, чтобы быть в состоянии дать ему кириллический путь?Я попытался кодировать его в кодировке UTF-8, но это оказалось безуспешным.Спасибо за потраченное время
Обновление:
На самом деле я получаю имя файла из элемента управления WX, так что это unicode, прежде чем я даже коснусь его.Когда я затем кодирую его в UTF-8, (используя filename = filename.encode ('UTF-8')), setopt работает нормально, но все взрывается при выполнении:
* About to connect() to example.com port 80 (#0)
* Trying 123.123.123.123... * connected
* Connected to example.com (123.123.123.123) port 80 (#0)
* failed creating formpost data
* Connection #0 to host example.com left intact
Traceback (most recent call last):
File "c:\python27\lib\site-packages\transfer_dialogs-0.28-py2.7.egg\transfer_dialogs\transfer_dialogs.py", line 64, in perform_transfer
self.curl.perform()
error: (26, 'failed creating formpost data')
Обновление 2:
По запросу немного больше данных.filename содержит результат GetValue () из открытого диалога.
logging.debug ("Имя файла:% r закодированное имя файла:% r"% (имя файла, filename.encode ('UTF-8'))))
результат:
Сб 05 февраля 2011 г. 03:33:56 core.dialogs.upload_audio ОТЛАДКА: Имя файла: u'C: \ Users \ Q \ test \\ u0422 \ u0435 \ u0441 \ u0442 \ u043e \ u0432 \ u0430\ u044f \ u030f \ u0430 \ u043f \ u0430 \ test.mp3 'закодированное имя файла:' C: \ Users \ Q \ test \\ xd0 \ xa2 \ xd0 \ xb5 \ xd1 \ x81 \ xd1 \ x82 \ xd0 \ xbe\ xd0 \ xb2 \ xd0 \ xb0 \ xd1 \ x8f \ xd0 \ xbf \ xd0 \ xb0 \ xd0 \ xbf \ xd0 \ xba \ xd0 \ xb0 \ test.mp3 '