Как создать и загрузить файл Excel с помощью запроса AjaxJquery

Программирование на jquery
Ответить
Anonymous
 Как создать и загрузить файл Excel с помощью запроса Ajax

Сообщение Anonymous »

Я хочу создать файл Excel, если пользователь нажал формулярную кнопку на моей веб-странице. Мое первое решение работает нормально. Пользователь нажал кнопку, серверный Java-код создает файл, и после выполнения Java-кода веб-браузер открывает диалоговое окно, которое спрашивает пользователя, показать или сохранить файл Excel.

Но у моего клиента появились новые требования. Если пользователь нажал формулярную кнопку, необходимо отобразить анимированное изображение GIF во время выполнения Java-кода на стороне сервера, а анимированный GIF-изображение должен немедленно исчезнуть, если Java-код на стороне сервера был завершен.

Это кнопка отправки Struts2, которая запускает HTTP-запрос, если кнопка была нажата:
Это клиентский код, который создает и отправляет HTTP-запрос в мой класс действий Struts2:

Код: Выделить всё

function myJsFunction(){
$.ajax({
type: "POST",
dataType: 'binary',
url: "myActionClass.action",
data: {//some necessary input values},
success: function(data){
console.log(data);
// js code to disappeared the animated gif image
}
});
}
Это код Java, создающий двоичный код:

Код: Выделить всё

private void returnExcelFileAsStream(final String filename) throws IOException {
final InputStream is = new FileInputStream(filename);
OutputStream os = null;
try {
response.setContentType("application/pdf");
response.setHeader("Cache-Control", "maxage=3600");
response.setHeader("Pragma", "public");
response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
os = response.getOutputStream();
int len;
byte buf[] = new byte[1024];
while ((len = is.read(buf)) > 0) {
os.write(buf, 0, len);
}
is.close();
os.close();
}
catch(Exception e){
// some exeception handling
}
}
Это метод выполнения Struts2, который вызывает метод returnExcelFileAsStream.

Код: Выделить всё

public String execute(){

// some Java code
returnExcelFileAsStream("MyExcelFile.xlsx")

return null;
}
Это мой файл struts.xml:

Код: Выделить всё

/WEB-INF/base/jsp/myJspPage.jsp

Теперь возникла проблема: веб-браузер не открывает диалоговое окно пользователя, в котором пользователю предлагается показать или сохранить файл. При использовании Firebug я вижу некоторые загадочные символы в ответе HTTP. Как я могу решить эту проблему?

Подробнее здесь: https://stackoverflow.com/questions/350 ... ax-request
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»