Skip to Content
Меню
Вам необхідно зареєструватися, щоб взаємодіяти зі спільнотою.
Це запитання позначене
3 Відповіді
6453 Переглядів

Hello,

I am struggling to add an attachment to a mail message that I create through the XMLRPC API for Odoo 14.

I get the error message...  argument should be a bytes-like object or ASCII string, not \'Binary\'

But when I print the type of my argument, it says class 'bytes'

What am I missing ?

Code follows...

with open("c:/users/lwolf/pictures/WinUpdate1.png", "rb") as image_file:
  imageBase64 = base64.b64encode(image_file.read())

print("The type of imageBase64 is ", type(imageBase64))

models.execute_kw(db, uid, password,
    'ir.attachment',
    'create',
             [{
                'res_model' : 'mail.message',
                'name' : 'WinUpdate Image',
                'res_id' : id,
                'type' : 'binary',
                'mimetype' : 'image/png',
                'store_fname' : 'WinUpdate1.png',
                'datas' : imageBase64
                }]
            )


Аватар
Відмінити

Hello Leonard, i am facing similar problem. have you found a fix?

Автор

Hello Bogdan,
Sorry to say, I have not been able to resolve this. I've given up for now until someone can give me advice.

Найкраща відповідь
Please check this may be help
with open("c:/users/lwolf/pictures/WinUpdate1.png", "rb") as image_file:
  data = base64.b64encode(image_file.read())
imageBase64 = Image.open(io.BytesIO(data))

models.execute_kw(db, uid, password,
    'ir.attachment',
    'create',
             [{
                'res_model' : 'mail.message',
                'name' : 'WinUpdate Image',
                'res_id' : id,
                'type' : 'binary',
                'mimetype' : 'image/png',
                'store_fname' : 'WinUpdate1.png',                                
                'datas': base64.b64encode(imageBase64)
                }]           
)
Аватар
Відмінити

How do you get the id field in 'res_id' : id ?
Thanks

Найкраща відповідь

Hello all, 

The datas you send through the 'datas' key must be a "stringify" of your binary.

Instead of sending  

b"R0lGODdhAQABAIAAAP///////ywAAAAAAQABAAACAkQBADs="
You should sending :
R0lGODdhAQABAIAAAP///////ywAAAAAAQABAAACAkQBADs=

You can obtain it by using : imageBase64.decode()

Hope this will help you.

Аватар
Відмінити
Найкраща відповідь

convert to string

str(imageBase64)[2:]


Аватар
Відмінити
Related Posts Відповіді Переглядів Дія
3
лип. 25
706
1
вер. 23
2290
1
серп. 23
13138
3
січ. 23
7540
1
бер. 22
5398