2015-08-30 1 views
4

Я пытаюсь получить загрузку и имя файла с сайта.Как получить одинарное двоичное поле скачать ссылку на сайте

модель

class Files(models.Model): 
    _name = 'website_downloads.files' 
    name = fields.Char() 
    file = fields.Binary('File') 

контроллер

class website_downloads(http.Controller): 
    @http.route('/downloads/', auth='public', website=True) 
    def index(self, **kw): 
     files = http.request.env['website_downloads.files'] 
     return http.request.render('website_downloads.index', { 
      'files': files.search([]), 
     }) 

шаблон

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
    <data> 
     <template id="index" name="Website Downloads Index"> 
      <t t-call="website.layout"> 
       <div id="wrap" style="margin-top:50px;margin-bottom:50px"> 
        <div class="container text-center"> 
         <table class="table table-striped"> 
          <t t-foreach="files" t-as="f"> 
           <tr> 
            <td><t t-esc="f.name"/></td> 
            **<td>Download</td>** 
           </tr> 
          </t> 
         </table> 

        </div> 
       </div> 
      </t> 
     </template> 
    </data> 
</openerp> 

Как можно получить ссылку для загрузки, и при сохранении файла в БД сохранить де оригинального файла

ответ

8

Odoo поставляется с встроенным /web/binary/saveas контроллер, который может быть использован именно для этой цели:

<t t-foreach="files" t-as="f"> 
    <tr> 
     <td><t t-esc="f.name"/></td> 
     <td><a t-attf-href="/web/binary/saveas?model=website_downloads.files&amp;field=file&amp;filename_field=name&amp;id={{ f.id }}">Download</a></td> 
    </tr> 
</t> 

Контроллер принимает четыре аргумента:

  • model - название модели с Binary поля
  • field - название поля Binary
  • id - идентификатор записи, содержащий конкретный файл.
  • filename_field - имя поля Char, содержащее имя файла (необязательно).
+0

Спасибо! Вы знаете, как назвать модель в качестве исходного имени файла? –

+0

Я не понимаю вопроса. –

+0

В форме модели, когда пользователь выбирает файл, файл хранится в базе данных как двоичная строка, но имя файла теряется, есть ли способ восстановить это имя файла? –

Смежные вопросы