angularjs - 将图像从前端应用程序保存到后端 API 的正确方法
问题描述
在我的例子中,我将 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)
在现有数据库上使用很复杂,但看起来非常灵活。还要使用方案二实现文件上传
解决方案
推荐阅读
- java - 为什么我的 SQLite 选择查询不能在应用程序中工作,但在 Android Studio 上的 Database Inspector 上工作?
- c - 如何将 mpz_t 类型值分配给指向结构的指针?
- c - 删除双向链表中的素数
- aws-sdk - 使用 cdk 部署 lambda 无法识别 sdk nodejs v3
- javascript - 角表删除操作
- javascript - Google 和其他机器人无法点击的 Javascript 链接?
- highcharts - Highcharts rangeselector 导航 - 从最低日期/值开始
- python - 为什么我无法从本网站的超链接中抓取 URL?
- python - 我如何使用在 python 中生成的 kafka 数据
- java - 从位桶管道访问 Salesforce 沙箱