Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"Post Image data using POSTMAN"

I am trying to POST data to my API. I have a model with an image field where:

image = models.ImageField()

I have an image on my local box, which I am trying to send. Am I sending it correctly?

{
   "id": "3", 
   "uid":"273a0d69",
   "uuid": "90",
   "image": "@/home/user/Downloads/tt.jpeg"
}
like image 975
User_Targaryen Avatar asked Sep 23 '16 11:09

User_Targaryen


People also ask

How do you send a photo in a POST request?

Option 1: Direct File Upload , From this method you can select form-data and set the type to file. Then select an image file by clicking on the button shown in the value column. The content type is automatically detect by postman but if you want you can set it with a relevant MIME type.


3 Answers

That's not how you send file on postman. What you did is sending a string which is the path of your image, nothing more.

What you should do is;

  1. After setting request method to POST, click to the 'body' tab.
  2. Select form-data. At first line, you'll see text boxes named key and value. Write 'image' to the key. You'll see value type which is set to 'text' as default. Make it File and upload your file.
  3. Then select 'raw' and paste your json file. Also just next to the binary choice, You'll see 'Text' is clicked. Make it JSON.

form-data section

raw section

You're ready to go.

In your Django view,

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() 
like image 187
Çağatay Barın Avatar answered Sep 23 '22 10:09

Çağatay Barın


Now you can hover the key input and select "file", which will give you a file selector in the value column:

enter image description here

like image 30
theisof Avatar answered Sep 22 '22 10:09

theisof


The accepted answer works if you set the JSON as a key/value pair in the form-data panel (See the image hereunder)

enter image description here

Nevertheless, I am wondering if it is a very clean way to design an API. If it is mandatory for you to upload both image and JSON in a single call maybe it is ok but if you could separate the routes (one for image uploading, the other for JSON body with a proper content-type header), it seems better.

like image 36
MarAja Avatar answered Sep 26 '22 10:09

MarAja