У меня есть загрузочное приложение Sprint, использующее угловую 4-ю полосу. С моей первой страницы я отправляю HTTP-запрос get с SQL-запросом и некоторыми другими параметрами.
Теперь я хочу, чтобы ответ был String
+ zip file
.
Я знаю, что могу отправить файл, подобный этому:
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + file.getFilename() + "\"")
.body(file);
но я понятия не имею, как объединить файл и строку в ReponseEntity
.
Вот мой код (серверная часть):
Контроллер:
@GetMapping("/sql")
public ResponseEntity<String> handleSqlRequest(
@RequestParam("sql") String sql,
@RequestParam("source") String source,
@RequestParam("genFile") Boolean genFile
) {
SqlToolResponse sqlToolResponse;
if(genFile) {
//Create a ZIP file and execute sql
sqlToolResponse = this.sqlToolService.executeSqlWithFiles(sql, source, "oracle.jdbc.OracleDriver");
} else {
//Only execute SQL
sqlToolResponse = this.sqlToolService.executeSql(sql, source, "oracle.jdbc.OracleDriver");
}
Resource file = new UrlResource(("MYPATH/"+sqlToolReponse.getZipName()).toUri());
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + sqlToolResponse.getZipName()) + "\"")
.body(file);
}
SqlToolResponse:
public class SqlToolResponse {
private String result;
private String zipName;
public SqlToolResponse(String someResult, String zip) {
this.result = someResult;
this.zipName = zip;
}
public SqlToolResponse(String someResult) {
this.result = someResult;
this.zipName = null;
}
public String getResult() {
return result;
}
public String getZipName() {
return zipName;
}
}
есть идеи?