Как я могу прочитать большой двоичный объект при загрузке Spring

#mysql #spring-boot

#mysql #spring-boot

Вопрос:

Я новичок в Spring Boot и сохраняю несколько файлов в своей базе данных MySQL, которая выглядит как показано ниже, и она работает нормально, и теперь я хочу получить сохраненные файлы

Я не понимаю, как я могу прочитать данные blob-объекта и как преобразовать в URL-адрес для показа пользователям.

Контроллер

 @RequestMapping(value = "/getUser", method = RequestMethod.POST, consumes = "application/json", produces = "application/json")
@ResponseBody
public DBFile getUserById(@RequestBody DBFile dBFile ) {
    DBFile record = employeeRepository.findById(dBFile.getId());
    return record;
}
  

Репозиторий

 public interface MultipartRepository1 extends JpaRepository<DBFile, Integer{}
  

DTO

 @Entity
@Table(name = "files")
public class DBFile {

    @Id
    @GeneratedValue(generator = "uuid")
    @GenericGenerator(name = "uuid", strategy = "uuid2")
    private String id;
    private String file_name;
    private String file_type;
    @Lob
    private byte[] data;

    public DBFile() {

    }

    public DBFile(String file_name, String file_type, byte[] data) {
        this.file_name = file_name;
        this.file_type = file_type;
        this.data = data;
    }


    public String getId() {
        return id;
    }

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

    public String getFile_name() {
        return file_name;
    }

    public void setFile_name(String file_name) {
        this.file_name = file_name;
    }

    public String getFile_type() {
        return file_type;
    }

    public void setFile_type(String file_type) {
        this.file_type = file_type;
    }

    public byte[] getData() {
        return data;
    }

    public void setData(byte[] data) {
        this.data = data;
    }

}
  

Таблица

 673e148e-a209-45c8-914c-7016dd59542f    BLOB    home_beach.jpg      image/jpeg
a55777bc-5fda-41a7-a589-3731ae418262    BLOB    beach-houses.jpg    image/jpeg
ce3f502c-f780-4a7d-a7d1-e678adfa367d    BLOB    theahotel_logo.png  image/png
  

Ответ №1:

Spring boot автоматически вернет ваше blob-поле в виде строки base64, например

 {"data": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAABfAAAAXwBsrqMZwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAADdSURBVEiJtZTLCoUgEIZNaG90EfIFhXxTW6WbfJn/LA5xzOpUMg7MZmb4PvAyFWMMrGDwp4NSSqa1zpLgLqWU8N4DAIwxt/NJ/h9QSiGEAACw1kIIQSeI4fM8o2mat/BrQQxflgVd1 XAzwUpvO/7XPhRQAzfC2K4c44C/hOk8GEYKOBfQQz33lPCwdq2hXMOpYLXdc04f7wxsmK3CohezvGShRCw1gIA1nXFOI60goKSfaGA5Fgklpw3CCXXzVSilKIVpJIQQo7kfij J9M00Qs2idb69RFVm6VUfACZhb1lipibXgAAAABJRU5ErkJggg=="}
  

Вы можете вернуть только это поле из конечной точки. Затем преобразуйте это в изображение в клиентском приложении.

Комментарии:

1. Почему я должен конвертировать его в base 64

2. Я хочу преобразовать его в URL