“使用POSTMAN发布图像数据”

6tr1vspr  于 2022-11-07  发布在  Postman
关注(0)|答案(7)|浏览(273)

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

image = models.ImageField()

我的本地盒子上有一张图片,我正试图发送它。我发送的正确吗?

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

ykejflvf1#

这不是你在 Postman 上发送文件的方式。你所做的只是发送一个字符串,它是你的图像的路径,仅此而已。
你应该做的是:
1.将请求方法设置为POST后,单击“body”选项卡。
1.选择form-data。在第一行,您将看到名为key和value的文本框。将“image”写入key。您将看到默认设置为“text”的值类型。将其设置为File并上载您的文件。
1.然后选择“raw”并粘贴JSON文件。另外,在二进制选项旁边,你会看到“Text”被点击。将其设置为JSON。

你可以走了。
在你的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()
xwmevbvl

xwmevbvl2#

现在您可以悬停键输入并选择“file”,这将在值列中给予您一个文件选择器:

gwo2fgha

gwo2fgha3#

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

尽管如此,我想知道这是否是一个非常干净的设计API的方法。如果你必须在一个调用中同时上传图片和JSON,也许这是可以的,但如果你可以分开路径(一个用于图片上传,另一个用于带有适当内容类型头的JSON主体),这似乎更好。

6gpjuf90

6gpjuf904#

可以通过三种方式来实现

1.转到“正文”〉“表单数据”〉“选择列中的文件”

2.转到“主体”〉“二进制”〉“选择文件”

3.将图像编码为base64字符串,并通过postman Body〉raw〉JSON传递,如所附截图中所述

然后在服务器端,您可以用这种方式解码

import base64
decode = base64.b64decode(data)

from django.core.files.base import ContentFile
file = ContentFile(decode, name=name)

注意:您可以通过该链接将文件编码为base64,然后在curl中发送它。
https://base64.guru/converter/encode/file

dced5bon

dced5bon5#

它对我很有效:
1.后藤正文
1.表单数据
1.在第一个单元格中选择“File”

properties

u5i3ibmn

u5i3ibmn6#

请遵循以下步骤:
1.不需要给予任何类型的标头。
1.选择body〉form-data,然后执行与图中所示相同的操作。x1c 0d1x
1.现在在你的Django中view.py

def post(self, request, *args,**kwargs):
    image = request.FILES["image"]
    data = json.loads(request.data['data'])
    ...
    return Response(...)

1.您可以从数据变量访问所有密钥(id、uid等)。

pkln4tw6

pkln4tw67#

如果端点只需要一个映像(而不是键值对),您可以从***binary***选项卡上传映像。

相关问题