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

mic*_*mit 8 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/
Run Code Online (Sandbox Code Playgroud)

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

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

在djangorestframework的测试html形式中,一切正常.

使用该-F选项,它表示我一次只能执行1个请求...我还从数据二进制文件中删除了数据类型

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

mic*_*mit 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/
    
    Run Code Online (Sandbox Code Playgroud)

顺便说一下,我知道所有这些都在curl的文档站点上,但是错过了所有这些事情的例子,因为有很多选项需要尝试.