"使用POSTMAN"发布图像数据

时间:2016-09-23 11:50:35

标签: django django-models django-rest-framework postman

我正在尝试将数据发布到我的API。我有一个image字段的模型,其中:

image = models.ImageField()

我的本​​地包装盒上有一张图片,我正在尝试发送。我发送的是正确的吗?

{
   "id": "3", 
   "uid":"273a0d69",
   "uuid": "90",
   "image": "@/home/user/Downloads/tt.jpeg"
}

6 个答案:

答案 0 :(得分:39)

这不是你在邮递员上发送文件的方式。你所做的是发送一个字符串,这是你的图像的路径,仅此而已。

你应该做的是什么;

  1. 将请求方法设置为POST后,单击“正文”选项卡。
  2. 选择表单数据。在第一行,您将看到名为key和value的文本框。将“图像”写入密钥。您将看到默认情况下设置为“text”的值类型。将其设为文件并上传文件。
  3. 然后选择'raw'并粘贴你的json文件。也只是在二元选择旁边,您会看到单击“文本”。把它变成JSON。
  4. form-data section

    raw section

    你准备好了。

    在您的Django视图中,

    from rest_framework.views import APIView
    from rest_framework.parsers import MultiPartParser
    from rest_framework.decorators import parser_classes
    
    @parser_classes((MultiPartParser, ))
    class UploadFileAndJson(APIView):
    
        def post(self, request, format=None):
            thumbnail = request.FILES["file"]
            info = json.loads(request.data['info'])
            ...
            return HttpResponse()
    

答案 1 :(得分:7)

如果您在form-data面板中将JSON设置为键/值对,则接受的答案有效(请参见下图)

enter image description here

尽管如此,我想知道它是否是一种设计API的非常简洁的方法。如果您必须在一次调用中上传图像和JSON,也许可以,但是如果您可以分隔路径(一个用于图像上传,另一个用于JSON主体,具有适当的内容类型标题),它似乎更好

答案 2 :(得分:1)

如果端点只需要一个图像(而不是键值对),您可以从 二进制 标签上传您的图像。 enter image description here

答案 3 :(得分:0)

请遵循以下步骤:

  1. 无需提供任何类型的标题。
  2. 选择正文>表单数据,并执行图中所示的操作。 1

  3. 现在在您的Django视图中。py

def post(self, request, *args, **kwargs):
    image = request.FILES["image"]
    data = json.loads(request.data['data'])
    ...
    return Response(...)
  1. 您可以从数据变量访问所有键(id,uid等。)

答案 4 :(得分:0)

现在,您可以悬停键输入并选择“文件”,这将在值列中为您提供文件选择器:

enter image description here

答案 5 :(得分:0)

它对我有用:

  1. 转到正文
  2. 表单数据
  3. 在第一个单元格中选择“文件”enter image description here属性