9

我正在为 Django 网站创建一个 RESTful api。我正在使用美味的派来做这件事。我的问题是我无法设计如何通过此 api 发布图像或文件。我的意思是,为了在数据库上创建一个对象,我们以 json 格式发布数据。但是我怎样才能在那个json里面放一个文件呢?

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

那么任何人都可以解释我如何发布一个包含其中文件的对象吗?

4

2 回答 2

5

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

看起来有一些方法可以做到这一点,但效果不佳。

经过很长时间玩弄各种解决方案(https://github.com/klipstein/django-tastypie/commit/e0f86ddffeb46c77704328a3b5899ec08e18e4ebhttps://github.com/klipstein/django-tastypie/commits/form-data)做文件- 在美味派中处理我得出的结论是,如果您想支持从每个浏览器上传文件,则无法优雅地解决此问题。

看看这个叉子

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

于 2011-12-23T08:05:58.100 回答
1

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

对于文件上传视图,您可能希望退出 sweetpie,并明确编写视图。

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

于 2011-08-25T16:31:41.677 回答