В моем случае я использую 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 для реализации загрузки файла