В Rest API необходимо создать ZIP и загрузить в клиентскую систему - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть REST API, который должен: 1. Создать несколько файлов Json из объектов 2. Заархивировать их все 3. Загрузить в систему клиента - кто бы ни обращался к URL.

Я могучтобы выполнить шаги 1 и 2, но при выполнении шага 3 он загружается на мой сервер, но не на клиент.В настоящее время я пытаюсь в моем локальном, позже этот код перемещается в AWS, не уверен, что он также будет загружать на локальный сервер или клиент:

Код для шага 3:

public void downloadZip(String zipFileName)
{
    File file = new File(zipFileName);
    if(!file.exists()){
        System.out.println("file not found");
    }

    OutputStream out = null;
    try
    {
        out = new FileOutputStream("test_"+zipFileName);
        FileInputStream in = new FileInputStream(file);
        byte[] buffer = new byte[4096];
        int length;
        while ((length = in.read(buffer)) > 0){
            out.write(buffer, 0, length);
        }
        in.close();
        out.flush();
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }
}

1 Ответ

0 голосов
/ 22 ноября 2018

Попробуйте, используя тип контента application/zip.

 if(file.exists()){
        byte[] arr = FileUtils.readFileToByteArray(file);
        return ResponseEntity.ok().contentLength(arr.length)
                        .header(HttpHeaders.CONTENT_TYPE, "application/zip")
                        .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + file.getName())
                        .body(arr);
} else {
        return ResponseEntity.notFound().build();
}
...