Vlad Cenan
Vlad Cenan

Reputation: 172

Curl POST call for server API which uploads a file

I want to translate a series of POSTMAN calls into bash in order to create a script. Super easy till now where I want to POST an xlsx file with roles with form-data.I use this script:

curl -i -X POST \
-H 'externalTenantId: 326c1027-bf20-4cd6-ac83-33581c50249b'  \
-H "uid: user" \
-H "Content-Type: multipart/form-data" \
-F 'payload={
      "importMode": "OVERWRITE",
      "tenantId": "326c1027-bf20-4cd6-ac83-33581c50249b",
      "file": "roles.xlsx"
    }' \  
-F '[email protected]' \
"http://server:8080/iamsvc/batchImport/v2/direct/roles"

This is the postman call which works:

POST http://server:8080/iamsvc/batchImport/v2/direct/roles
Headers:
uid: [email protected]
externalTenantId: 4cd6-ac83-33581c50249b-327522
Payload:
{
            "file": [Excel file to be uploaded],
            "importMode": "OVERWRITE",
            "tenantId": "4cd6-ac83-33581c50249b-327522"
}

This is the error that I get:

HTTP/1.1 100 Continue

HTTP/1.1 400 Bad Request
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=0BA814182C258E1DFE62ACF98409F9CD; Path=/iamsvc/; 
Secure; HttpOnly
Content-Length: 0
Date: Mon, 26 Sep 2016 12:59:50 GMT
Connection: close

Upvotes: 1

Views: 3032

Answers (1)

Vlad Cenan
Vlad Cenan

Reputation: 172

The answer was in curl --manual and it's working like this:

curl -i -X POST -H "uid: user" -H "externalTenantId: 326c1027-bf20-4cd6-ac83-33581c50249b" -F "file=@/home/user/zscripts/iamapi/roles.xlsx" -F "importMode=OVERWRITE" -F "tenantId=326c1027-bf20-4cd6-ac83-33581c50249b" http://server:8080/iamsvc/batchImport/v2/direct/roles

Upvotes: 1

Related Questions