I have a custom web form in odoo. I need to upload files. My controllers.py:
@http.route(['/test/'], type='http', auth="user", methods=['GET', 'POST'], website=True) def upload_files(self, **post): values = {} form_vals = {} ........... if post.get('attachment',False): Attachments = request.registry['ir.attachment'] name = post.get('attachment').filename file = post.get('attachment') attachment_id = Attachments.create(request.cr, request.uid, { 'name':name, 'res_name': name, 'type': 'binary', 'res_model': 'project.issue', 'res_id': form_id, 'datas': base64.encode(file.read()), }, request.context) ............
The code above creates an attachment named res_model, etc., but the attached file is damaged and cannot be opened.
XML file:
.......... <form t-attf-action="/test/done" method="post" enctype="multipart/form-data" class="form-horizontal mt32"><div t-attf-class="form-group"> .......... <div t-attf-class="form-group"> <label class="col-md-3 col-sm-4 control-label" for="attachment">Attachments</label> <div class="col-md-7 col-sm-8"> <input name="attachment" type="file" class="file" multiple="true" data-show-upload="true" data-show-caption="true" lass="file" data-show-preview="true"/> </div> </div>> .......... </form>
In the console:
name = post.get('attachments_for_issue').filename _logger.error("name is: %r", name) file = post.get('attachments_for_issue') _logger.error("file is?: %r", file.read())
returns:
5092 ERROR HDHDHD openerp.addons.test.controllers.controllers: name is: u'test_image.jpg' 5092 ERROR HDHDHD openerp.addons.test.controllers.controllers: file is?: <FileStorage: u'test_image.jpg' ('image/jpeg')>
source share