首页 > 解决方案 > 如何多次上传文件?

问题描述

这是我的代码,我在这里接受 Excel 文件并读取它。之后我读取行值的 Excel 文件并将它们插入到数据库中,然后插入到相应的列中。最后,我把文件放在电脑上我确定好的文件夹里。但是我在这里遇到了一个问题,当我想在api中多次下载同名文件时,它表明我最初只是第一次将它上传到文件夹,但它会将值打印到数据库中。我无法对此做出任何逻辑,你认为我能在这里做什么?

 @Override
    public ResponseEntity<? extends Response> acceptExcelFileAndSenderName(MultipartFile filePath, String senderName) throws IOException {
        String fileName = filePath.getOriginalFilename();
        if (fileName.substring(fileName.length() - 5).equals(".xlsx")) {
            try (InputStream excelFile = filePath.getInputStream()) {
                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.getCellType() == CellType.NUMERIC) {
                            phoneNumber = NumberToTextConverter.toText(currentCell.getNumericCellValue());
                        } else if (currentCell.getCellType() == CellType.STRING) {
                            textMessage = String.valueOf(currentCell.getStringCellValue());
                        }

                    }
                    FileDetail fileDetail = new FileDetail();
                    fileDetail.setPhoneNumber(phoneNumber);
                    fileDetail.setTextMessage(textMessage);
                    fileDetail.setSender(senderName);
                    this.fileDetailRepository.save(fileDetail);
                }
                excelFile.close();

                String destination = "C:\\Users\\anar.memmedov\\Desktop\\app\\" + filePath.getOriginalFilename();
                File file1 = new File(destination);
                filePath.transferTo(file1);
                return new ResponseEntity<>(new SuccessResponse(MessageCase.FILE_SUCCESSFULLY_WRITTEN_TO_DATABASE.getMessage(), 200), HttpStatus.OK);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return new ResponseEntity<>(new ErrorResponse(MessageCase.FAILED_HAPPEND_WHEN_FILE_WRITTEN_TO_DATABASE.getMessage(), 400), HttpStatus.BAD_REQUEST);
    }

标签: javaexcelfileupload

解决方案


尝试为每个文件创建一个唯一的文件名,例如:

String destination = "C:\\Users\\anar.memmedov\\Desktop\\app\\" + System.nanoTime()+"_"+filePath.getOriginalFilename();

推荐阅读