Правильный способ сохранить изображение из приложения переднего плана в API бэкенда - PullRequest
0 голосов
/ 25 октября 2019

В моем случае я использую AngularJS и Django с фреймворком Django Rest. Поэтому мне нужно сохранить данные профиля с изображением. Моя модель в базе данных выглядит следующим образом:

class Profile(models.Model):
    first_name = models.CharField()
    avatar = models.ImageField()

Но я не могу решить, какой лучший способ сохранить это изображение на передней панели.

Решение 1 - Преобразовать изображение в base64 и создать Base64Serializer в Django:

https://xploit29.com/2016/09/13/upload-files-to-django-rest-framework-using-angularjs/

Для меня самый простой способ

Решение 2 - Загрузка нескольких файлов данных / форм с помощью AngularJS

https://withintent.uncorkedstudios.com/multipart-form-data-file-upload-with-angularjs-c23bf6eeb298

Мне не нравятся такие вещи, как:

$http.post(uploadUrl, fd, {
    transformRequest: angular.identity,
    headers: {'Content-Type': undefined} 
}) 

Похоже, взломать. И то же самое на внутренней стороне. Нам нужно использовать https://www.django -rest-framework.org / api-guide / parsers / # multipartparser

Решение 3 - Создать отдельный вид для загрузки файлов и изменения базы данныхв :

class Image(models.Model):
   image = models.ImageField()

class Profile(models.Model):
    first_name = models.CharField()
    avatar = models.ForeignKey('Image', null=True, blank=True, on_delete=NULL)

Сложно использовать в существующей базе данных, но кажется очень гибким. Но также используется решение 2 для реализации загрузки файла

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