I know there are a lot of questions about this, but I can't get this to work:
I want to upload a file from input to a server in multipart/form-data
I've tried two approaches. First:
headers: {
'Content-Type': undefined
},
Which results in e.g. for an image
Content-Type:image/png
while it should be multipart/form-data
and the other:
headers: {
'Content-Type': multipart/form-data
},
But this asks for a boundry header, which I believe should not be manually inserted...
What is a clean way to solve this problem? I've read that you can do
$httpProvider.defaults.headers.post['Content-Type'] = 'multipart/form-data; charset=utf-8';
But I don't want all my posts to be multipart/form-data. The default should be JSON
Take a look at the FormData object: https://developer.mozilla.org/en/docs/Web/API/FormData
In Angular 6, you can do this:
In your service file:
In component.ts file: in any function say xyz,
Here's an updated answer for Angular 4 & 5. TransformRequest and angular.identity were dropped. I've also included the ability to combine files with JSON data in one request.
Angular 5 Solution:
Angular 4 Solution: