【问题标题】:Binding a image upload to a bson.Binary object将图像上传绑定到 bson.Binary 对象
【发布时间】:2021-06-17 10:15:58
【问题描述】:

我有一个 Java spring boot 后端,它将数据存储在 mongodb 中。通过 Rest API,我将获取此图像数据并在我的 Angular 前端显示图像。 现在,我想让 POST-request 、文件上传等工作正常,我会得到 base64-data。

在此代码中,二进制数据已在 formData-property 中可用。要序列化的对象的模型类在下面的代码中。

每当我发布数据时,它都采用以下格式(img,嵌套自 session -> sessionPhoto -> image)。如何将 image.data(base64 字符串)序列化为 Binary 对象?

 onSubmit(sessionForm : NgForm) {;
    this.speakers = this.speakersControl.value;
    this.formData.speakers = this.speakers;
    let dateString = this.datePipe.transform(this.formData.session_date, 'yyyy-MM-dd');
    console.log(this.formData);
    
    var result = this.sessionService.postSession(this.formData).subscribe(
      (res) => console.log(res),
      (err) => console.log(err),
      () => sessionForm.resetForm()
    );
  }
@Document("photo")
public class Photo {
    @Id
    private String id;

    private String title;

    private Binary image;

    public Photo(String title) {
        this.title = title;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public Binary getImage() {
        return image;
    }

    public void setImage(Binary image) {
        this.image = image;
    }

【问题讨论】:

    标签: angular typescript mongodb bson


    【解决方案1】:

    解决了这个问题。

    创建了一个 wrapper-image 对象来保存从前端返回的数据,并为 JSON 响应创建了一个不同的设置器。

    @com.fasterxml.jackson.annotation.JsonSetter
        public void setImage(Image image) {
            this.image = new Binary(BsonBinarySubType.BINARY, Base64.getDecoder().decode(image.data.getBytes(StandardCharsets.UTF_8)));
        }
    
        public void setImage(Binary binary){
            this.image= binary;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-24
      • 2011-05-14
      • 1970-01-01
      相关资源
      最近更新 更多