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"?