Мой Java Rest API имеет следующий метод:
@Path("file")
...
private static final String TEMP_PATH = System.getProperty("java.io.tmpdir");
@GET
@Path("{key}")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response getXml(@PathParam("key") String key) throws Exception {
String fileName = new SimpleDateFormat("dd_MM_yyyy_HH_mm_ss_").format(new Date()) + key + ".xml";
PrintWriter writer = new PrintWriter(TEMP_PATH + fileName, "UTF-8");
writer.println(getXML(key));
writer.close();
Response.ResponseBuilder responseBuilder = Response.ok(new File(TEMP_PATH + fileName));
responseBuilder.header("Content-Disposition", "attachment; filename = " + fileName);
return responseBuilder.build();
}
И мой клиент запрашивает файл
const path = 'localhost:8080/server/api/file/' + '1';
this.http.get(path);
Если я получаю доступ к URL-адресу из своего браузера, который запрашивает файл из http get, я могу его загрузить. Но это не работает в моем угловом приложении.
Определите «не работает». Что именно вы ожидаете, и что произойдет вместо этого? Обратите внимание, что вы должны подписаться на наблюдаемое, иначе ничего не произойдет.
Я ожидаю, что браузер откроет окно для загрузки файла, как это происходит, когда я использую тот же путь в строке поиска. Но ничего не происходит.
Этого не случится. Вы отправляете запрос AJAX, поэтому ваш код JS должен обработать ответ. Браузер не открывает диалоговое окно. Используйте простую ссылку на URL вместо отправки запроса AJAX.
Я не могу получить доступ к URL-адресу, потому что в производственной среде api защищен для структуры A. A.





попробуйте этот window.open (путь);