Hướng dẫn tạo form upload nhiều hình ảnh bằng Java
Hướng dẫn chi tiết cách tạo form upload nhiều hình ảnh bằng Java sử dụng Spring Boot và thư viện `Commons FileUpload`. Bài viết bao gồm các bước cài đặt và ví dụ minh họa cụ thể.
Trong bài viết này, chúng ta sẽ tìm hiểu cách tạo form upload nhiều hình ảnh bằng Java với Spring Boot. Chúng ta sẽ sử dụng thư viện Commons FileUpload
để xử lý việc tải lên nhiều hình ảnh cùng một lúc.
Mã Java:
1. Thiết lập dự án Spring Boot
- Tạo một dự án Spring Boot mới và thêm các phụ thuộc sau vào tệp
pom.xml
:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
</dependencies>
2. Tạo form HTML để upload nhiều hình ảnh
Tạo một tệp index.html
với mã HTML sau:
<!DOCTYPE html>
<html>
<head>
<title>Upload nhiều hình ảnh</title>
</head>
<body>
<h1>Upload nhiều hình ảnh</h1>
<form method="POST" action="/upload" enctype="multipart/form-data">
<input type="file" name="files" multiple><br><br>
<input type="submit" value="Upload">
</form>
</body>
</html>
3. Xử lý yêu cầu upload hình ảnh trong Controller
Tạo một Controller trong Spring Boot để xử lý quá trình upload hình ảnh:
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
@RestController
public class ImageUploadController {
@PostMapping("/upload")
public String uploadMultipleFiles(@RequestParam("files") MultipartFile[] files) {
StringBuilder message = new StringBuilder("Upload kết quả:<br>");
for (MultipartFile file : files) {
try {
// Lưu mỗi tệp hình ảnh vào thư mục đích
file.transferTo(new File("uploads/" + file.getOriginalFilename()));
message.append("Tải lên thành công: ").append(file.getOriginalFilename()).append("<br>");
} catch (IOException e) {
message.append("Tải lên thất bại: ").append(file.getOriginalFilename()).append("<br>");
}
}
return message.toString();
}
}
Giải thích chi tiết từng dòng code:
-
Thêm phụ thuộc (
pom.xml
): Các thư việnspring-boot-starter-web
vàcommons-fileupload
cần thiết để xử lý yêu cầu HTTP và upload tệp. -
Tạo form HTML: Sử dụng
enctype="multipart/form-data"
để hỗ trợ upload nhiều tệp. -
Controller:
-
@RestController
: Định nghĩa Controller Spring Boot. -
@PostMapping("/upload")
: Định nghĩa phương thức để xử lý POST request từ form upload. -
MultipartFile[] files
: Nhận các tệp được upload từ form. -
file.transferTo(...)
: Lưu tệp vào thư mụcuploads
.
-
Yêu cầu hệ thống:
- JDK 8 hoặc cao hơn
- Spring Boot 2.5 hoặc cao hơn
- Thư viện
commons-fileupload
Cách cài đặt các thư viện:
Các thư viện đã được tự động quản lý bằng Maven. Đảm bảo bạn đã thêm phụ thuộc vào tệp pom.xml
.
Lời khuyên:
- Hãy đảm bảo thư mục
uploads
tồn tại trong thư mục dự án hoặc tự động tạo nó trước khi lưu tệp. - Hạn chế kích thước tệp upload bằng cách thiết lập cấu hình trong Spring Boot.