Você conhece o método HTTP PATCH?
Estou com a impressão de que você está fazendo tudo somente através do método HTTP POST. A evidência pra isso é pela sua rota: /produts/edit/:id. Esse "edit" na rota foge do padrão REST, pois geralmente não utilizamos verbos nas rotas - utilizamos somente substantivos. Para indicar que você quer editar um produto já existente, e diferenciar da rota de criação de produto, geralmente utilizamos os verbos PATCH ou PUT. Veja o seguinte link: https://pt.stackoverflow.com/a/217901/128995
Resumindo, o PUT permite que alteremos a entidade inteira (todos os campos do produto). Enquanto isso, o PATCH permite que alteremos somente alguns campos da entidade (por exemplo, só a foto, ou só o nome, ou o nome e o preço, etc.).
Então me soa que você quer utilizar o método HTTP PATCH, para alterar somente alguns campos. O cliente (front-end) saberá quais campos mudaram e quais não mudaram, e farà a requisição passando somente os campos que foram alterados, com seus novos valores. Então se o usuário não mudou a foto, você não passa o campo da foto, e nada muda.
Na verdade eu nem criei a rota ainda, mas eu estava pensando em utilizar o método PUT. Na minha visão, este é o método ideal, visto que o usuário pode em uma única requisição alterar todos os campos mencionados. Ele não é obrigado a fazer isso, ele pode alterar apenas um. Mas se a aplicação permite que todos sejam alterados em uma requisição, então é um PUT. Posso estar errado também neste pensamento, não sei.
O método PATCH poderia ser aplicado, se por exemplo, eu tivesse uma rota exclusiva só para alterar a imagem. Mas como eu tenho apenas uma rota, que permite a alteração de todos os campos, então é um PUT.
Resumindo, o PUT permite que alteremos a entidade inteira (todos os campos do produto). Enquanto isso, o PATCH permite que alteremos somente alguns campos da entidade (por exemplo, só a foto, ou só o nome, ou o nome e o preço, etc.).
Exatamente o que você mencionou.