Se estiver mandando do browser voce nao precisa definir o header content-type manualmente, mas se por algum motivo o browser estiver definindo o content-type errado é só definir a boundry da seguinte forma:
"content-type": "multipart/form-data; boundary=\"<valor arbitrário>\""
Lembre de usar a propiedade 'name' nos seus inputs também.
Correção: o valor correto não é name, é boundary msm.
O que eu colocaria nesse "valor arbitrário"?
Bom, segundo a definição de arbitrário, o que você quiser. Provavelmente o valor que seu backend espera receber.
Nesse caso eu colocaria o boundary como "image", "product", "price", "category"?