我有一个Controller
:
@Controller
public class ImageController {
@GetMapping("/upload")
public String uploadImageGet(Model model) {
return "uploadForm";
}
@PostMapping("/upload")
public String uploadImagePost(@ModelAttribute Image image, Model model) throws IOException {
// what should I do here?
return "result";
}
}
HTML表单:
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Getting Started: Serving Web Content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<form action="#" th:action="@{/upload}" th:object="${image}" method="post" enctype="multipart/form-data">
<label for="name">Name:</label><br>
<input type="text" id="name" name="name" value=""><br>
<label for="description">Description:</label><br>
<input type="text" id="description" name="description" value=""><br>
<label for="author">Author:</label><br>
<input type="text" id="author" name="author" value=""><br>
<label for="image">Image:</label><br>
<input type="file" id="image" name="image"><br><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
和一个存储表单数据的类:
public class Image {
private String name;
private String author;
private String description;
private MultipartFile image;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public MultipartFile getImage() {
return image;
}
public void setImage(MultipartFile image) {
this.image = image;
}
}
我想发送表单数据到另一个主机(Spring API),但也显示一个"上传成功"响应页面。因此,我想在控制器中处理所有这些,但不知道如何做到这一点。我能够找到一些关于手动创建请求的资源,但这似乎必须有一些更简单的方法来做到这一点。如果我做错了,请告诉我。
这几乎取决于你所说的:
我想发送表单数据到另一个主机(Spring API)
一种方法是使用REST将数据异步发送到另一个Spring应用程序或使用Spring REST模板的任何其他应用程序:https://www.baeldung.com/rest-template.
并向用户展示一个成功的html站点。
但是如果你做异步,你应该记住REST调用可能失败,但你向用户展示了一个成功的页面。
我的建议是在spring启动应用程序中创建一个额外的REST端点,并通过javascript通过fetch或ajax调用从站点发送数据,从那里它可以被发送到其他spring应用程序