这是我的方法,它读取发送给她的 .xlsx 文件,然后查看在数据库中插入值的工作,最后将 excel 文件移动到我在计算机上指定的文件夹中。
public Response acceptExcellFileAndInsertToDatabase(MultipartFile file) {
try (FileInputStream excelFile = new FileInputStream(file)) {
String phoneNumber = "";
String textMessage = "";
Workbook workbook = new XSSFWorkbook(excelFile);
Sheet datatypeSheet = workbook.getSheetAt(0);
Iterator<Row> iterator = datatypeSheet.iterator();
while (iterator.hasNext()) {
Row currentRow = iterator.next();
Iterator<Cell> cellIterator = currentRow.iterator();
while (cellIterator.hasNext()) {
Cell currentCell = cellIterator.next();
if (currentCell.getCellTypeEnum() == CellType.NUMERIC) {
phoneNumber = NumberToTextConverter.toText(currentCell.getNumericCellValue());
} else if (currentCell.getCellTypeEnum() == CellType.STRING) {
textMessage = String.valueOf(currentCell.getStringCellValue());
}
}
}
UserDetail userDetail = new UserDetail();
userDetail.setPhoneNumber(phoneNumber);
userDetail.setTextMessage(textMessage);
this.userDetailRepository.save(userDetail);
excelFile.close();
Path sourcePath = Paths.get(file);
Path targetPath = Paths.get("C:\\Users\\User\\Desktop\\ko\\" + sourcePath.getFileName());
Files.move(sourcePath, targetPath);
return new SuccessResponse(MessageCase.FILE_SUCCESSFULLY_WRITTEN_TO_DATABASE.getMessage(), 200);
} catch (IOException e) {
e.printStackTrace();
}
return new ErrorResponse(MessageCase.FAILED_HAPPEND_WHEN_FILE_WRITTEN_TO_DATABASE, 404);
}
但我不能使用 MultipartFile 来做到这一点。我之所以使用 MultipartFile 是因为 swagger 按我的意愿输出文件添加按钮。在使用 MultipartFile 之前,我的方法将字符串值作为参数,并且我将文件的扩展名发送到那里,如下所示:C:/Users/User/file.xlsx,它工作正常。但由于这不是真的,我意识到使用 MultipartFile 更正确。
这里有没有办法。我应该对使用 MultipartFile 的方法进行哪些更改?