Я пытаюсь отправить CSV-данные клиенту.Отправка файла клиенту Java-игра
Вот как я продолжаю: Клиентская сторона: ajax вызов на сервер, чтобы получить файл.
$.ajax({
url:"/csv/"+source,
method:'post',
data:JSON.stringify(json),
contentType: "application/json; charset=utf-8"
});
Сторона сервера: сгенерируйте файл, а затем отправьте его клиенту.
File file = CSVGenerator.generateFromJson(source, request().body().asJson());
response().setHeader("Content-Lenght", String.valueOf(file.length()));
response().setHeader("Content-Disposition", "attachment; filename=\""+file.toString()+"\"");
return ok(file).as("text/csv");
Я пробовал много возвратов. например, я попытался это:
return ok(new FileInputStream(file)).as("text/csv");
Я также пробовал много заголовков, как:
response().setContent("text/csv");
или
response().setHeader("Content-Type","text/csv");
вместо .as("text/csv")
клиент получит ответ с хорошим заголовок, хорошие данные, но никогда не запускайте загрузку.
Что мне не хватает?
@EoiFirst Вы должны написать название языка, как это означало быть написано. Точно так же, как вы сделали бы для человека имя, бренд или что-нибудь еще. С учетом сказанного, что происходит на клиенте? Единственное, что я вижу, это то, что 'Content-Length' написано неправильно. –
Спасибо за подсказку. Правильно написано о длине, но ничего не меняет. На клиенте ничего не происходит. Я вижу, что ответ в порядке, но загрузка не начинается – EoiFirst
Что же касается просто: 'return ok (file);', вы попробовали это? – Aerus