Uso ExtJS para compilar el lado del cliente para mi programa. Hay una situación en la que deseo enviar una solicitud de Ajax al servidor y obtener el archivo de respuesta (archivo binario, no archivo de texto plano, es decir, XLS o PDF). ¿Cómo puedo obtener ese archivo devuelto por ExtJS (me refiero a que el archivo se puede descargar y almacenar en el cliente)? No puedo usar var result = Ext.decode(response.responseText)
para recibir el resultado porque la respuesta contiene datos binarios y no se puede decodificar.Obtener archivo de respuesta use ExtJS
La llamada Ajax es muy simple:
Ext.Ajax.request({
url : 'myController/exportFile',
method : 'GET',
success : function(response, opts) {
// What should I do to get the file?
},
failure : function(response, opts) {
alert('Export file failed!')
}
});
Aquí es mi acción del servidor de archivos para volver:
public void sendFile(HttpServletResponse response, String filePath) {
def file = new File(filePath);
response.setContentType("application/octet-stream");
response.setHeader("Content-disposition", "attachment;filename=${file.getName()}");
response.outputStream << file.newInputStream();
}
Muchas gracias!
¡Excelente respuesta! Eress el mejor !! ¡He buscado este largo tiempo y solo esta publicación me ha dado la respuesta correcta! – davs
@amol puede ayudarme [aquí] (http://stackoverflow.com/questions/8505995/itextsharp-generated-pdf-how-to-prompt-a-user-to- choose-where-to-save) – Armance