Как разрешить пользователю загружать byte [] или base64 в выбранный им каталог - PullRequest
0 голосов
/ 20 июня 2020

Я хочу разрешить пользователю загружать PDF-файл, созданный в iText.

Ожидаемый результат - пользователь может загрузить PDF-файл в свой выбранный каталог. Фактическим результатом является то, что файл не будет загружен.

Я создаю PDF-файл с помощью iText и передаю результат обратно в свой ajax вызов, чтобы пользователь мог загрузить файл. У меня base64. Я проверил, что он действителен, используя https://base64.guru/converter/decode/pdf. Это правильно показывает pdf. Однако я не могу получить результат для загрузки в ajax ".done".

Я пробовал использовать:

byte[] decoder = Base64.getDecoder().decode(b64);

Перед тем, как передать его обратно; однако я получаю сообщение об ошибке в ".getDecoder ()" из "Метод getDecoder () не определен для типа Base64".

Код java:

resourceImage = MySQLConnection.recipePDF(accountID, crID, servings, servingSize);
String imageDataString = Base64Encode2.encode(resourceImage);
System.out.println("imageDataString: " + imageDataString);

if (resourceImage == null) {
    response.sendError(HttpServletResponse.SC_BAD_REQUEST, "No recipe pdf.");
} else {
    String json = new Gson().toJson(imageDataString);
    response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");
    response.getWriter().write(json);
}

Код javascript / ajax на сайте:

.done(function(responseJson1a){
    dataType: "json";
    alert(JSON.stringify(responseJson1a));  
    download(responseJson1a, "resourcefile.pdf", "application/pdf");
});

1 Ответ

0 голосов
/ 20 июня 2020

Очень простой ответ. Мне нужно было добавить «data: application / pdf; base64» в начало строки.

download("data:application/pdf;base64,"+responseJson1a, "resourcefile.pdf", "application/pdf");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...