Angularjs 将图像从前端应用程序保存到后端API的正确方法
在我的例子中,我将AngularJS和Django后端与Django Rest框架一起使用。所以我需要用图像保存一个配置文件数据。我在数据库中的模型如下所示:Angularjs 将图像从前端应用程序保存到后端API的正确方法,angularjs,django,django-rest-framework,Angularjs,Django,Django Rest Framework,在我的例子中,我将AngularJS和Django后端与Django Rest框架一起使用。所以我需要用图像保存一个配置文件数据。我在数据库中的模型如下所示: class Profile(models.Model): first_name = models.CharField() avatar = models.ImageField() 但我无法决定在前端保存此图像的最佳方式 解决方案1-将映像转换为base64并在Django中创建base64序列化程序: 对我来说最简单的
class Profile(models.Model):
first_name = models.CharField()
avatar = models.ImageField()
但我无法决定在前端保存此图像的最佳方式
解决方案1-将映像转换为base64并在Django中创建base64序列化程序
:
对我来说最简单的方法
解决方案2-使用AngularJS上传多部分/表单数据文件
我不喜欢这样的事情:
$http.post(uploadUrl, fd, {
transformRequest: angular.identity,
headers: {'Content-Type': undefined}
})
看起来像哈克。后端也一样。我们需要使用
解决方案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实现文件上传发布base64数据对于带宽和内存来说效率低下。最有效的方法是使用。另一种方法是,您可以尝试更改将此图像上载到s3,只将s3返回的链接图像保存在数据库中。发布base64数据对于带宽和内存来说效率很低。最有效的方法是使用。另一种方法,您可以尝试,可能很简单的更改上载此图像到s3,只保存从s3返回的链接图像在数据库中。