0

场景:我有一个 spring boot 端点,提交的 XML 文件很少,并且发生了一些操作。为了提高性能,讨论了不要每次都上传文件(提交),而是存储在平台中(第一次提交期间)。然后,下一次,用户不需要提交文件,而是从缓存中检索。但是,我需要以下建议:

 @PostMapping(path = "/endpoint")
  public ResponseEntity<byte[]> fileUpload(
      @RequestParam(name ="A",required = false) MultipartFile multipartfile1,
      @RequestParam(name ="B",required = false) MultipartFile multipartfile2,
      @RequestParam(name ="C",required = false) MultipartFile multipartfile3,
      @RequestParam(name ="D",required = false) MultipartFile multipartfile4,
      @RequestParam(name ="E",required = false) MultipartFile multipartfile5,
      @RequestParam(name ="F",required = false) MultipartFile multipartfile6,
      @RequestParam(name ="G",required = false) MultipartFile multipartfile7)
      throws IOException {
    ResponseEntity<byte[]> resp = null;
    try {
      MultipartFile[] files = {multipartfile1, multipartfile2, multipartfile3, multipartfile4,
          multipartfile5, multipartfile6, multipartfile7};
      
      checkifEmptyAndUpdateTheArray(files); //here fails. I want to extract the file present in cache
        
      DateTime start = DateTime.now();
      
      //storing files     
      nodesetService.storeNodeSet(files);     //able to store the files
      log.warn("Start: {}", start);
      }catch (Exception e) {
      log.error("Unexpected exception: ", e);

      return createErrorJSONResponse(HttpStatus.INTERNAL_SERVER_ERROR, e.getMessage());
    }

失败:从第二次开始,我没有向端点提交任何文件,文件数组为空,我只能使用缓存中的名称检索文件。

private void checkifEmptyAndUpdateTheArray(MultipartFile[] files) {
    
    Arrays.asList(files).stream().forEach(file->{
      if(file==null) {
        MultipartFile storedFile = nodesetService.getStoredNodeSet(file); //fails here
        if(!storedFile.isEmpty()) {
          Arrays.asList(files).set(Arrays.asList(files).indexOf(file), storedFile);
        }
        else {
          log.error("NodeSet is absent in the cache");
        }
      }
    });

NodeSetService.java:

public MultipartFile getStoredNodeSet(MultipartFile file) {
    Filter invFilter = new Filter();
    invFilter.byType(file.getName()); // possibility to extract file from cache. But fails as file is null

    return null;

任何建议如何处理这种情况?

4

0 回答 0