Skip to Content
เมนู
คุณต้องลงทะเบียนเพื่อโต้ตอบกับคอมมูนิตี้
คำถามนี้ถูกตั้งค่าสถานะ
3 ตอบกลับ
6542 มุมมอง

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
800
1
ก.ย. 23
2347
1
ส.ค. 23
13256
3
ม.ค. 23
7654
1
มี.ค. 22
5478