将图像从前端应用保存到后端API的正确方法

时间:2019-10-24 22:23:10

标签: angularjs django django-rest-framework

在我的情况下,我将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 来实现文件上传

0 个答案:

没有答案