Показать сообщение отдельно
  #1 (permalink)  
Старый 02.02.2016, 07:25
Новичок на форуме
Отправить личное сообщение для CrHD Посмотреть профиль Найти все сообщения от CrHD
 
Регистрация: 02.02.2016
Сообщений: 1

Диалог "Save as" для данных в переменной.
Добрый день!
На бэкэнде (Django) формируем файл (excel) и записываем его в HttpResponse
Код:
response = HttpResponse(content_type="application/xls")
response['Content-Disposition'] = 'attachment; filename="%s"' % filename
response.write(save_virtual_workbook(book))
Итого в response имеем непосредственно данные файла. По сути бери и соохраняй. Если запросить, например,
window.open('/url/to/view?' + $.param(data.form_data));
то браузер сразу предлагает сохранить файл.
Дело в том, что в ответе может не быть файла, и нужно вывести сообщение об ошибке. Поэтому я использую $.ajax
$.ajax({
                url: '/url/to/view',
                type: 'GET',
                data: data.form_data,
                dataType: 'application/xls',

                success: function(response) {
                    if (response.error){alert(response.error); 
                }
            });

В функции success, переменной response есть наш файл, и я никак не могу догнать как мне его сохранить...
Такой ход
window.open('data:application/xls,' + response)
отдает некорректный файл (размером на 8Кб больше)
Собственно как мне сохранить содержимое response в неизменном виде, в котором оно приходит с бэкэнда?
Заранее благодарю.
Ответить с цитированием