使用json使用djangorestframework将图像上传到ima​​gefield并使用CURL进行测试

时间:2012-07-09 15:52:09

标签: django json curl imagefield django-rest-framework

我在djangorestframework中制作了几个api。 这个我可以用api的html形式和命令行中的curl一起测试。

现在我有一个api到一个模型,其中一个字段是一个ImageField。

我无法弄清楚要使用哪个curl命令。 使用我在以json格式发布动作之前使用的语法,它将是:

curl -X POST -S -H 'Content-Type: application/json' -u "username:password" --data-binary '{"otherfields":"something", "photo":"/home/michel/test.jpg"}' 127.0.0.1:8000/api/v1/

但在这种情况下,照片不会被保存并留空(照片是可选字段)

添加-T /home/michel/test.jpg 我收到一条错误消息,说127.0.0.1:800/api/v1/test.jpg不存在为URL。

在djangorestframework的测试html表单中,一切正常。

使用-F选项,它说我一次只能做1个请求... 我还从data-binary

中删除了数据类型

任何人都可以帮助我如何使用json in 1命令中的图像和其他数据制作此卷曲帖子。

1 个答案:

答案 0 :(得分:11)

经过长时间的拼图,这似乎可以解决问题:

  • 将所有json参数放在单独的-F参数
  • 仅使用标题Accept(不是Content-Type
  • 并指定图像类型
  • 使用@表示要上传的本地文件

    curl -X POST -S \
      -H 'Accept: application/json' \
      -u "username:password" \
      -F "otherfields=something" \
      -F "photo=@/home/michel/test.jpg;type=image/jpg" \
      http://127.0.0.1:8000/api/v1/
    

顺便说一下,我知道所有这些都在curl的文档站点上,但是由于有很多选项需要尝试,所以只是错过了所有这些内容的示例。