如何在网站odoo上传图片?

时间:2016-02-06 11:17:45

标签: openerp odoo-8 openerp-8 odoo-9 odoo-website

我正在研究Hr_Recruitment模块。我已经为HR-> Application.I添加了一个二进制图像字段。我正在尝试为外部用户添加功能,以通过网站自己填充作业应用程序。我添加了名称,电子邮件,手机,恢复工作申请网站中的附件字段。当他们点击提交时,它正在HR->工作申请表中更新。但是图片字段没有在Application中更新。打开工作申请时它显示的消息如“无法显示所选图像“。如何解决此问题?

控制器/ main.py

if post.get('image',False):
            image = request.registry['ir.attachment']
            name = post.get('image').filename      
            file = post.get('image')
                attach = file.stream
                file.show()

                f = attach.getvalue()

                webbrowser.open(image)
            attachment_id = Attachments.create(request.cr, request.uid, {
                    'name': image,
                    'res_name': image,
                    'res_model': 'hr.applicant',
                    'res_id': applicant_id,
                        'datas': base64.decodestring(str(res[0])),
                        'datas_fname': post['image'].filename,
        }, request.context)

views/templates.xml

<div t-attf-class="form-group">
                    <label class="col-md-3 col-sm-4 control-label" for="image">Image</label>
                    <div class="col-md-7 col-sm-8">
                                        <img id="uploadPreview" style="width: 100px; height: 100px;" />
                            <input id="uploadImage" name="image" type="file" class="file" multiple="true" data-show-upload="true" data-show-caption="true" data-show-preview="true" onchange="PreviewImage();"/>
                    </div>
                     </div>

Application Form in website page HR->Application Form

2 个答案:

答案 0 :(得分:1)

在XML模板中添加如下所示的图像字段:

<img itemprop="image" style="margin-top: -53px; margin-left:19px; width:80px;" class="img img-responsive" t-att-src="website.image_url(partner, 'image', None if product_image_big else '300x300')"/>
<input class="input-file profileChooser" id="fileInput" type="file" name="ufile" onchange="validateProfileImg();"/>

为您删除不必要的属性。

在控制器功能中,您可以从图像字段中获取值:

vals = {}
if post['ufile']:
    vals.update({'image': base64.encodestring(post['ufile'].read())})
request.registry['res.partner'].write(cr, uid, [partner_id], vals)

以上代码适用于我,我一直用它来更新ODOO网站的合作伙伴图像。

答案 1 :(得分:0)

我正在使用 odoo13,我使用这种格式将图像从网站上传到 respartner 表单视图:

<div class="col-md-6">
   <label for="image_1920" class="form-label">Passport Photo*</label>
   <input type="file" class="form-control" id="image_1920" name="image_1920" required="1" />
</div>

import base64

    @http.route('/registered', auth='public', methods=['GET', 'POST'], website=True)
    def registration_submit(self, *args, **kw):
        image = kw.get('image_1920', False)

        kw.update({
            'free_member': True,
            'image_1920': base64.encodestring(image.read()) if image else False
        })
        member = request.env['res.partner'].sudo().create(kw)