在我的情况下,我将AngularJS和Django后端与Django Rest框架一起使用。所以我需要用图像保存配置文件数据。我在数据库中的模型如下:
class Profile(models.Model):
first_name = models.CharField()
avatar = models.ImageField()
但是我无法决定哪种最佳方法将图像保存在前端。
解决方案1-将图像转换为base64并在Django中创建Base64Serializer
:
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 来实现文件上传