Должен ли я конвертировать файл в Base64 до или после отправки его на сервер? - PullRequest
0 голосов
/ 30 октября 2019

Прежде всего, я знаю, что сохранение строки Base64 в базе данных - не самый эффективный способ сохранения изображений, но у меня их немного, и они загружаются редко, так что это не должно быть проблемой.

Итак, начнем, у меня есть база данных SQL с таблицей «рисунки», которая имеет два столбца, уникальное имя и строку, представляющую файл в базе 64:

@Entity
public class Picture {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private long id;

  @Column(unique = true)
  private String name;
  private String imageInBase64;
}

Пользовательможет выбрать изображение в пользовательском интерфейсе, которое затем отправляется на сервер через REST. У меня вопрос, должен ли я кодировать файл / изображение в Base64 перед отправкой его бэкэнду или я должен кодировать его в бэкэнде после его получения? В настоящее время я просто кодирую его во внешнем интерфейсе и отправляю JSON, представляющий класс Picture.

1 Ответ

1 голос
/ 30 октября 2019

Это из этого поста ... Хранение изображения в базе данных напрямую или в виде данных base64?

Я утверждаю, что изображения (файлы) обычно НЕ хранятся в базе данных в кодировке base64. Вместо этого они хранятся в необработанном двоичном виде в двоичном (двоичном) столбце (или файле).

Base64 используется только в качестве транспортного механизма, а не для хранения. Например, вы можете встроить изображение в кодировке base64 в документ XML или сообщение электронной почты.

Base64 также удобен для потоковой передачи. Вы можете кодировать и декодировать на лету (не зная общего размера данных).

Хотя base64 подходит для транспортировки, не храните изображения в кодировке base64.

Base64 не предоставляет контрольной суммыили любое другое значение для хранения.

Кодировка Base64 увеличивает требования к хранилищу на 33% по сравнению с необработанным двоичным форматом. Это также увеличивает объем данных, которые необходимо прочитать из постоянного хранилища, которое по-прежнему является самым большим узким местом в вычислениях. Как правило, быстрее читать меньше байтов и кодировать их на лету. Только если ваша система связана с процессором, а не с IO, и вы регулярно выводите изображение в base64, рассмотрите возможность хранения в base64.

Встроенные изображения (изображения в кодировке base64, встроенные в HTML) сами по себе являются узким местом. - вы отправляете на 33% больше данных по проводам и делаете это последовательно (веб-браузер должен дождаться встроенных изображений, прежде чем он сможет завершить загрузку HTML страницы).

Если вы все еще хотите сохранитьизображения в кодировке base64. Что бы вы ни делали, убедитесь, что вы не храните данные в кодировке base64 в столбце UTF8, а затем индексируйте их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...