首页 > 解决方案 > 如何通过邮递员测试spring boot多个文件上传及其详细信息?

问题描述

我有一个模型,它将用于上传多个文件以及文件的详细信息。

我将收到 3 个文件的出生证明、公民身份和一个其他文件。这三个文件有自己的详细信息,应该由我的 Certificates.java 类保存。

买家卖家文档.java

@AllArgsConstructor
@NoArgsConstructor
@Data
@FieldDefaults(level = AccessLevel.PRIVATE)
public class BuyerSellerDocs {

    Long transactionId;
    Long contactTypeId;
    Long contactId;

    Certificates birthDayCertificates;
    Certificates citizenshipCertificates;
    Certificates otherCertificates;


}

对应的子类是

@AllArgsConstructor
@NoArgsConstructor
@Data
@FieldDefaults(level = AccessLevel.PRIVATE)
public class Certificates {
    Long documentTypeId;
    String certificateRefno;
    Date issueDate;
    MultipartFile documentFile;
    Long documentType;
}

控制器类是

private static  final String[] certificatesType = new String[]{"birthCertificate","citizenCertificate","otherCertificate"};

    @PostMapping("/app/uploadcontactdocuments")
    public ResponseEntity<Tbldocumentdetail> uploadContactDocuments(@ModelAttribute BuyerSellerDocs documents) throws IOException {

        //creating an instance of entity to be saved
        Tbldocumentdetail tbldocumentdetail = new Tbldocumentdetail();
        Certificates certificates = null;

        for(int i=0; i>certificatesType.length; i++) {
           if(certificatesType[i].equalsIgnoreCase("birthCertificate")) {
               certificates = documents.getBirthDayCertificates();
           }
           else  if(certificatesType[i].equalsIgnoreCase("citizenCertificate")) {
               certificates = documents.getCitizenshipCertificates();
           }
           else {
               certificates = documents.getOtherCertificates();
           }

            //finding the type of document (i.e birth certificate, citizenship certificate etc) and setting it to entity
            Tbldocument tbldocument =documentListService.findDocumentbyID(certificates.getDocumentTypeId());
            tbldocumentdetail.setTbldocument(tbldocument);

            //fetch multipart file convert it to bytes and set to entity
            tbldocumentdetail.setDocument(certificates.getDocumentFile().getBytes());

            tbldocumentdetail.setContactid(documents.getContactId());

            //find contact type
            Tblcontacttype tblcontacttype = new Tblcontacttype();
            Optional<Tblcontacttype> tblcontacttype1 =contactTypeRepo.findById(documents.getContactTypeId());
            if(tblcontacttype1.isPresent()){
                tblcontacttype = tblcontacttype1.get();
            }

            //set contact type to document detail
            tbldocumentdetail.setTblcontacttype(tblcontacttype);

            tbldocumentdetail.setReferenceno(documents.getTransactionId());
            java.sql.Date currentDate = new java.sql.Date(new Date().getTime());
            tbldocumentdetail.setDateofupload(currentDate);


            Tbldocumentformat tbldocumentformat = new Tbldocumentformat();
            if(certificates.getDocumentFile().getOriginalFilename().contains("jpg"))
            {
                tbldocumentdetail.setDocumentformat(5);
            } else if(certificates.getDocumentFile().getOriginalFilename().contains("png")){
                tbldocumentdetail.setDocumentformat(1);
            }else if(certificates.getDocumentFile().getOriginalFilename().contains("doc")){
                tbldocumentdetail.setDocumentformat(4);
            }else if(certificates.getDocumentFile().getOriginalFilename().contains("pdf")){
                tbldocumentdetail.setDocumentformat(6);
            }

            tbldocumentdetail.setDocumentname(certificates.getDocumentFile().getOriginalFilename());

            Tbldocumentdetail details =documentDetailsRepo.save(tbldocumentdetail);
        }



//i need to update here
        return ResponseEntity.ok(null);

    }

控制器类不完整。这里的困惑是,如果这是我应该接收参数的方式,我如何从邮递员那里调用这个 api 来测试它?

标签: javaspring-boot

解决方案


推荐阅读