17

How can I send POST request with a csv or a text file to the server running on a localhost using cURL.

I have tried curl -X POST -d @file.csv http://localhost:5000/upload but I get

{ "message": "The browser (or proxy) sent a request that this server could not understand." }

My server is flask_restful API. Thanks a lot in advance.

2 Answers 2

19

There are many alternate ways to accomplish this. One way is I have used the following:

curl -F ‘data=@<file_location>’ <URL>

Eg. curl -F [email protected] localhost:5000/h

Your command can also be changed slightly like this

curl -X POST -H 'Content-Type: text/csv' -d @file.csv http://localhost:5000/upload

The above is one of the many ways.It can be sent either as a part of form or data, or multipart, etc. You can refer Medium Post

Sign up to request clarification or add additional context in comments.

2 Comments

Oh, I get it. Thanks a lot. Is there a way to send this csv data with a key so that my server can grab this file with a key name?
Maybe, you can use --data-binary to include the newline characters in csv file.
2

Curl's default Content-Type is application/x-www-form-urlencoded so your problem is probably that the data you are POSTing is not actually form data. It might work if you set the content type header properly:

-H "Content-Type: text/csv"

Though it does depend on the server.

1 Comment

Understood. Thank you.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.