2015-01-31 2 views
1

Я пытаюсь выполнить загрузку в podio, но это не удается. После экстракт:Загрузка файла подкода в Python

c = api.OAuthClient(
    podio_pw.client_id, 
    podio_pw.client_secret, 
    podio_pw.username, 
    podio_pw.password, 
source = "dit is een test" 
    attributes = { 
      'filename' : 'test.txt', 
      'source' : source 
      } 
    filep = 

c.transport.POST(url='/file/v2/',body=attributes,type='multipart/form-data') 

Это приводит всегда к следующей ошибке.

Traceback (most recent call last): 
    File "C:\Python34\libs\podio-py-master\attach_invoices.py", line 43, in <module> 
    filep = c.transport.POST(url='/file/v2/',body=attributes,type='multipart/form-data') 
    File "C:\Python34\libs\podio-py-master\pypodio2\transport.py", line 135, in __call__ 
    body = "".join(body) 
    File "C:\Python34\libs\podio-py-master\pypodio2\encode.py", line 376, in __next__ 
    return next(self) 
    File "C:\Python34\libs\podio-py-master\pypodio2\encode.py", line 352, in __next__ 
    block = next(self.param_iter) 
    File "C:\Python34\libs\podio-py-master\pypodio2\encode.py", line 245, in iter_encode 
    block = self.encode(boundary) 
    File "C:\Python34\libs\podio-py-master\pypodio2\encode.py", line 233, in encode 
    if re.search("^--%s$" % re.escape(boundary), value, re.M): 
    File "C:\Python34\lib\re.py", line 166, in search 
    return _compile(pattern, flags).search(string) 
TypeError: can't use a string pattern on a bytes-like object 

Я знаю, что должен сделать что-то с байт-кодирования и т.д., но я понятия не имею, как справиться с этим. Даже если я попытаюсь сделать этот источник файлом, необработанным файлом или каким-либо другим, POST завершится с ошибкой.

+0

же результат с источником = открытый («test.txt», «радиоканал») Может кто-нибудь объяснить, что такое «источник "в этой переменной атрибутов должно быть? Файл, имя файла, файл-файл, двоичный/необработанный файл или ... ??? – mdecroos

ответ

1

Это работает для меня:

c = api.OAuthClient(
    client_id, 
    client_secret, 
    username, 
    password,  
) 

filename = 'screenie.png' 
filedata = open(filename, 'r') 

"""Create a file from raw data""" 
attributes = {'filename': filename, 
       'source': filedata} 

file_upload = c.transport.POST(url='/file/v2/', body=attributes, type='multipart/form-data') 
print(file_upload) 

Я поднял код отсюда: https://github.com/podio/podio-py/blob/master/pypodio2/areas.py

+0

это одно рабочее решение! –

+0

какая версия python вы использовали –

+0

@nitanshbareja Я использую python 2.7.13 – Silas