Я делаю запрос ExtJS AJAX, и я хочу, чтобы диалоговое окно «Сохранить как» стандартного браузера отображалось пользователю. Файл для загрузки может быть файлом pdf, jpg или png.ExtJS AJAX сохранить как диалоговое окно
В настоящий момент запрос AJAX успешно отправлен, но поскольку он асинхронен, диалоговое окно не появляется.
Я мог бы просто не использовать AJAX, но есть много кода javascript, который мне нужно использовать перед тем, как сделать запрос, и я действительно не чувствую, что переписываю его в java.
Мой код выглядит следующим образом:
var params = getPrintInfo(form);
Ext.Ajax.request({
url : 'print',
method : 'POST',
params : {
customData: params.customData,
dpi: params.dpi,
format: params.format,
grid: params.grid,
title: params.title
},
autoAbort : false,
success : function(result, request) {
if(result.responseText==''){
//display error message
}else{
// display save as dialog box
}
}
});
В моем контроллере я устанавливаю заголовки быть:
httpResponse.setHeader("Content-disposition", "attachment; filename=" + this.config.getString("print.file.name")+outputType);
EDIT:
действительно нашел это решение:
Ext.DomHelper.append(document.body, {
tag: 'iframe',
frameBorder: 0,
width: 0,
height: 0,
css: 'display:none;visibility:hidden;height:1px;',
src: 'http://blabla.com/f75e927b-2041-473e-86ba-cbbc60dbc285.pdf'
});
Теперь возникает вопрос: как я могу изменить имя pdf, чтобы быть претендентом, например map.pdf, вместо того, чтобы иметь эту длинную уродливую буквенно-цифровую строку?
Это не хватает делает то, что я хочу. Единственная проблема заключается в том, что на мгновение, когда мой ответ возвращается, новая вкладка открывается и закрывается мгновенно, что не очень приятно. – Sfairas
не используют веб-браузер, тогда –