【问题标题】:Updating a table to contain an image更新表格以包含图像
【发布时间】:2021-11-30 16:39:43
【问题描述】:

我已经成功创建了一个实体并且可以发布到它。我希望能够使用 blob 文件更新表的列。当我发出发布请求时,我得到了成功响应,但是该行没有更新

这是实体

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Entity
    @Service
    public class Category {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private long categoryId;
    
        @NotNull
        @Column(unique=true)
        @Size(min = 5, max = 20)
        private String categoryName;
    
        @Column(columnDefinition = "MEDIUMBLOB")
        private byte[] categoryImage;
    
        @NotNull
        @Size(min = 10, max = 50)
        private String categoryDescription;
    }

图片上传的PUT请求

    @PutMapping("/categories/{categoryId}/upload")
    public ResponseEntity<ResponseMessage> uploadImage(@PathVariable("categoryId") long catID,
            @RequestParam() MultipartFile file) {
        Optional<Category> category = catService.listCategoryById(catID);
        if (category.isPresent()) {
            try {
                Category _category = category.get();
                _category.setCategoryImage(imgService.storeImage(file));
                return new ResponseEntity<>(
                        new ResponseMessage("Uploaded " + file.getOriginalFilename() + " successfully!"),
                        HttpStatus.CREATED);

            } catch (Exception e) {

                return new ResponseEntity<>(new ResponseMessage("Failed to upload " + file.getOriginalFilename() + "!"),
                        HttpStatus.EXPECTATION_FAILED);

            }
        } else {
            return new ResponseEntity<>(new ResponseMessage("Category Does not exist"), HttpStatus.NOT_FOUND);
        }
    }

图片服务

    @Service
    public class ImageService {
    
        public byte[] storeImage(MultipartFile file) throws IOException {
            return file.getBytes();
        }
    }

当我发出 PUT 请求时,我得到了这个

但是数据库没有更新。图像列保持为空

你知道为什么吗?

【问题讨论】:

    标签: spring-boot jpa spring-data-jpa rest


    【解决方案1】:

    我没有在您的控制器代码中看到 service.save() 调用。你在坚持那个 _category 实体吗?

    try {
          Category _category = category.get();                
          _category.setCategoryImage(imgService.storeImage(file));
    
          categoryService.save(_category);
    
          return new ResponseEntity<>(
                            new ResponseMessage("Uploaded " + file.getOriginalFilename() + " successfully!"),
                            HttpStatus.CREATED);
    
      } catch (Exception e) {
    
           return new ResponseEntity<>(new ResponseMessage("Failed to upload " + file.getOriginalFilename() + "!"),
                            HttpStatus.EXPECTATION_FAILED);
    
      }
    

    【讨论】:

      猜你喜欢
      • 2021-08-22
      • 2021-02-04
      • 2011-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-02
      • 2017-06-08
      相关资源
      最近更新 更多