diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index 9935436bdca..3d777b381bb 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -2163,20 +2163,26 @@ instance.web.list.Binary = instance.web.list.Column.extend({ */ _format: function (row_data, options) { var text = _t("Download"); - var download_url = _.str.sprintf( + var value = row_data[this.id].value; + var download_url; + if (value && value.substr(0, 10).indexOf(' ') == -1) { + download_url = "data:application/octet-stream;base64," + value; + } else { + download_url = _.str.sprintf( '/web/binary/saveas?session_id=%s&model=%s&field=%s&id=%d', instance.session.session_id, options.model, this.id, options.id); - if (this.filename) { - download_url += '&filename_field=' + this.filename; - if (row_data[this.filename]) { - text = _.str.sprintf(_t("Download \"%s\""), instance.web.format_value( - row_data[this.filename].value, {type: 'char'})); + if (this.filename) { + download_url += '&filename_field=' + this.filename; } } + if (this.filename && row_data[this.filename]) { + text = _.str.sprintf(_t("Download \"%s\""), instance.web.format_value( + row_data[this.filename].value, {type: 'char'})); + } return _.template('<%-text%> (<%-size%>)', { text: text, href: download_url, - size: instance.web.binary_to_binsize(row_data[this.id].value), + size: instance.web.binary_to_binsize(value), }); } });