提问人:user1555190 提问时间:11/17/2023 更新时间:11/18/2023 访问量:32
在 Spring 中上传时验证多部分文件
Validating a multipart file on upload in spring
问:
我有一个spring boot应用程序,允许我上传文件,如下所示:
public ResponseEntity<Object> saveEmployee( @RequestParam("file") final MultipartFile multipartFile) {
employeeS3Service.save(multipartFile);
return ResponseEntity.ok().build();
}
我想做的是在保存到 s3 之前,我想验证它的 contens。有没有简单的方法可以做到这一点?所以我阅读每一行并检查内容?
答:
0赞
Georgii Lvov
11/17/2023
#1
是的,您可以使用提供的 来验证文件的内容,以读取内容,然后执行验证逻辑:InputStream
MultipartFile
import org.springframework.web.multipart.MultipartFile;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
class Validator {
public void validateFileContents(MultipartFile multipartFile) throws IOException {
try (InputStream inputStream = multipartFile.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
String line;
while ((line = reader.readLine()) != null) {
// Perform your validation logic for each line
if (!isValid(line)) {
throw new IllegalArgumentException("Invalid content in the file");
}
}
}
}
private boolean isValid(String line) {
// Your validation logic here
// For example, check if the line meets certain criteria
// Return true if valid, false otherwise
return true;
}
}
评论
0赞
Georgii Lvov
11/21/2023
@user1555190,如果我的回答对您有帮助且可以接受,请单击“接受它作为答案”
0赞
Georgii Lvov
11/23/2023
@user1555190,这个答案对你有用吗?至少留下一些反馈总是好的,因为这将表明您尊重帮助您解决问题的社区成员
0赞
Ahmed Mera
11/18/2023
#2
您可以尝试创建这样的 validtor 类:
import org.springframework.web.multipart.MultipartFile;
public class FileValidator {
public static boolean validateFile(MultipartFile file) {
// Perform your validation checks here
try {
// Read the file contents
byte[] fileBytes = file.getBytes();
String fileContent = new String(fileBytes);
// Example validation
if (fileContent.contains("invalidKeyword")) {
// File content is not valid
return false;
}
// Add more validation checks as needed
} catch (Exception e) {
// handel error
return false;
}
// File content is valid
return true;
}
}
然后使用 FileValidator:
public ResponseEntity<Object> saveEmployee( @RequestParam("file") final MultipartFile multipartFile) {
if (!FileValidator.validateFile(file)) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST)
.body("Invalid file content");
}
// Proceed with saving the file to S3 or perform other actions
employeeS3Service.save(multipartFile);
return ResponseEntity.ok("File uploaded successfully");
}
评论