Как скачать файл с сервера Java Spring?
Какой и как метод нужно написать с использованием get запроса по имени файла, чтобы скачать ее. P.S. В проекте не используется БД Заранее спасибо!
DirectorController.java
@Controller
@PreAuthorize("hasAnyAuthority('DIRECTOR')")
public class DirectorController {
@Value("${upload.path}")
private String uploadPath;
public static List<Order> dirOrder = new LinkedList<>();
@GetMapping("/director")
public String download(Map<String, Object> model) {
dirOrder.clear();
for (int i = 0; i < MainController.list.size(); i++) {
if ((MainController.list.get(i).getOrderExecutor().equalsIgnoreCase("DIRECTOR"))) {
dirOrder.add(MainController.list.get(i));
}
}
Iterator<Order> orders = dirOrder.iterator();
model.put("orders", orders);
return "/director";
}
@PostMapping("/director")
public String add(@RequestParam String orderName, @RequestParam String orderOwner, @RequestParam String orderExecutor, Map<String, Object> model, @RequestParam("orderFile") MultipartFile file) throws IOException {
if (MainController.checkName(orderName)) {
Order order = new Order(orderName, orderOwner, orderExecutor);
if (file != null) {
File upFile = new File(uploadPath);
if (!upFile.exists()) {
upFile.mkdir();
}
String uuid = UUID.randomUUID().toString();
String fileName = uuid + "." + file.getOriginalFilename();
File newFile = new File(uploadPath + "/" + fileName);
file.transferTo(newFile);
Cript.Cript(newFile);
order.setOrderFile(fileName);
}
order.setStatus("Активный");
MainController.list.add(order);
dirOrder.clear();
for (int i = 0; i < MainController.list.size(); i++) {
if ((MainController.list.get(i).getOrderExecutor().equalsIgnoreCase("DIRECTOR"))) {
dirOrder.add(MainController.list.get(i));
}
}
Iterator<Order> orders = dirOrder.iterator();
model.put("orders", orders);
return "director";
}
Iterator<Order> orders = dirOrder.iterator();
model.put("orders", orders);
return "director";
}
@PostMapping("/dircheak")
public String cheakResult(@RequestParam String orderName, Map<String, Object> model) {
for (int i = 0; i < MainController.list.size(); i++) {
if (MainController.list.get(i).getOrderName().equalsIgnoreCase(orderName)) {
MainController.list.get(i).setStatus("На доработку от директора");
MainController.list.get(i).setOrderExecutor("HEAD");
MainController.list.get(i).setOrderOwner("DIRECTOR");
}
}
dirOrder.clear();
Iterator<Order> orders = dirOrder.iterator();
model.put("orders", orders);
return "director";
}
@PostMapping("/direnter")
public String enterResult(@RequestParam String orderName, Map<String, Object> model) throws FileNotFoundException {
for (int i = 0; i < MainController.list.size(); i++) {
if (MainController.list.get(i).getOrderName().equalsIgnoreCase(orderName)) {
MainController.list.remove(i);
}
}
dirOrder.clear();
Iterator<Order> orders = dirOrder.iterator();
model.put("orders", orders);
return "director";
}
}
director.ftl
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Director</title>
</head>
<body>
<div align="right">
<form action="/logout" method="post">
<input type="hidden" name="_csrf" value="${_csrf.token}"/>
<input type="submit" value="Sign out">
</form>
</div>
<div align="center">
<form method="post" enctype="multipart/form-data">
<input type="text" name="orderName" placeholder="Введите название приказа:"/>
<select name="orderOwner">
<option value="DIRECTOR">Директор</option>
</select>
<select name="orderExecutor">
<option value="HEAD">Глава отдела</option>
<option value="SPECIALIST">Специалист</option>
</select>
<input type="file" name="orderFile">
<input type="hidden" name="_csrf" value="${_csrf.token}"/>
<button type="submit">Добавить</button>
</form>
</div>
<table align="center" border="1" cellpadding="5">
<tr>
<th>Приказ</th>
<th>От</th>
<th>К</th>
<th>Статус</th>
</tr>
<#list orders as order>
<tr>
<td>${order.orderName}</td>
<td>${order.orderOwner}</td>
<td>${order.orderExecutor}</td>
<td>${order.status}</td>
</tr>
</#list>
</table>
<br>
<div align="center">
<form action="/dircheak" method="post">
<input type="text" name="orderName" placeholder="Введите название приказа:"/>
<input type="hidden" name="_csrf" value="${_csrf.token}"/>
<button type="submit">Отправить на доработку</button>
</form>
</div>
<br>
<div align="center">
<form action="/direnter" method="post">
<input type="text" name="orderName" placeholder="Введите название приказа:"/>
<input type="hidden" name="_csrf" value="${_csrf.token}"/>
<button type="submit">Принять решение.</button>
</form>
</div>
</body>
</html>