通过RESTful api与django和tastypie发布文件

Mir*_*rak 9 django rest tastypie

我正在为Django网站创建一个RESTful api.我正在使用tastypie来做这件事.我的问题是我无法设计如何通过此api发布图像或文件.我的意思是,要在数据库上创建一个对象,我们将以json格式发布数据.但是我如何将文件放在json中呢?

我发现有两种方法,其中一种是将它们转换为Base64格式.我不想使用它,因为在我的测试中,当转换为Base64时,74kb的图像是110kb-120kb.

所以有人可以解释我如何发布一个包含文件的对象?

seb*_*seb 5

请看这里:https://github.com/toastdriven/django-tastypie/issues/42

看起来有些方法,但是效果不好.

过了许久,提供各种解决方案玩弄(https://github.com/klipstein/django-tastypie/commit/e0f86ddffeb46c77704328a3b5899ec08e18e4eb,https://github.com/klipstein/django-tastypie/commits/form-data)做文件在tastypie中处理我得出结论,如果你想支持来自每个浏览器的文件上传,这不能优雅地解决.

看看这个叉子

https://github.com/ff0000/django-tastypie/commit/1fbc0a


Tom*_*tie 1

将文件序列化到 JSON 请求中是一种有点尴尬的方法,并且还意味着您会失去 Django 的一些文件上传自动功能,例如,在请求传入时将文件写入内存,然后只切换到写入它一旦超过一定大小,就会写入磁盘。

对于文件上传视图,您可能希望退出 tastypie,并显式编写视图。

request.FILES然后,您可以使用标准的多部分表单(并且只需像往常一样访问文件,或者(更复杂)创建一个接受原始文件内容的视图

  • 在 tastypie 中我看到了一个名为 ImageField 的资源字段。可能它处理文件上传,但我不知道如何在我的 json 中发送文件。 (3认同)