首页 > 解决方案 > 如何使用 Angular 4 和 Spring 将图像存储在数据库中

问题描述

我将 Angular 4 用于前端,将 Spring 用于后端,我想在我的数据库中存储一个包含图像的用户。据我所知,Blob类型存在于Angular 4中但它不存在于 Spring 中,类型字节存在于Spring中但它不存在于 Angular 4 中。如何将我的图像从前端传输到后端使用 REST API。

这是我的实体:

import java.sql.Blob;
@Entity
@Table(name = "USER_OAUTH", schema = "OAUTH")
public class UserOauth implements java.io.Serializable {
 private long idUser;
 private String username;
 private String firstName;
 private String lastName;
 private String adrEmail;
 private int isAdAccount;
 private Date lastConnection;
 private String password;
 private boolean enabled;
 private int attempts;
 private Blob photo;

@Lob
@Column(name = "PHOTO", length = 10000000)
public Blob getPhoto() {
    return photo;
}

这是我的 DTO:

public class UserDTO implements java.io.Serializable {

 private long idUser;
 private String username;
 private String firstName;
 private String lastName;
 private String adrEmail;
 private int isAdAccount;
 private Date lastConnection;
 private String password;
 private boolean enabled;
 private Blob photo;

这是我的网络服务:(在添加照片之前它可以正常工作):

// Add a new user;
@RequestMapping(value = "/users", method = RequestMethod.POST)
public UserDTO addUser(@RequestBody final UserDTO user) throws Exception {
    return modelMapper.map(userService.saveUser(modelMapper.map(user, UserOauth.class)), UserDTO.class);
}

最后是我的打字稿:

export class UserData {
  public  idUser: number;
  public  username: string;
  public  firstName: string;
  public  lastName: string;
  public  adrEmail: string;
  public  isAdAccount: boolean;
  public  lastConnection: Date;
  public  password: string;
  public  enabled: boolean;
  public  photo:Blob;
}

如果有任何更正,请告诉我。先感谢您

标签: springangularrest

解决方案


如果您确实认为将图像存储在数据库中是有意义的,那么您可以使用 LOB 数据类型:

// File content
@Lob
private Blob image;

在前端使用 FormData 使用 REST API 将文件传递到后端,请参阅此处的示例

PS您可能希望将图像存储在文件系统中并将其路径保留在数据库中。请看看为什么


推荐阅读