AngularJS Carrega vários arquivos com a API FormData

Preciso fazer upload de arquivos de imagem e vídeo para o servidor em um aplicativo Angular usando o Laravel 5.1 como back-end. Todas as solicitações do Ajax precisam ir primeiro ao controlador Laravel, e temos o código para saber como o arquivo é tratado quando chega lá. Anteriormente, fizemos formulários HTML normais para enviar uploads de arquivos para o controlador, mas, neste caso, precisamos evitar a atualização de página de um formulário, por isso estou tentando isso no Ajax através do Angular.

Quais informações eu preciso enviar para o controlador Laravel com o Ajax que estava sendo enviado ao controlador através de um formulário HTML anteriormente?

Este é o código no controlador Laravel que manipulou as informações do arquivo quando chegaram lá. É isso que eu preciso descobrir como enviar, para que eu possa reutilizar este código:

    $promotion = Promotion::find($id);
    if (Input::hasFile('img_path')){
        $path             = public_path().'/images/promotion/'.$id.'/';
        $file_path        = $path.'promotion.png';
        $delete           = File::delete($file_path);
        $file             = Input::file('img_path');
        $uploadSuccess    = $file->move($path, 'promotion.png');
        $promotion->img_path = '/images/promotion/'.$id.'/promotion.png';
    }
    if (Input::hasFile('video_path')){
        $path             = public_path().'/video/promotion/'.$id.'/';
        $file_path        = $path.'promotion.mp4';
        $del,ete           = File::delete($file_path);
        $file             = Input::file('video_path');
        $uploadSuccess    = $file->move($path, 'promotion.mp4');
        $promotion->video_path = '/video/promotion/'.$id.'/promotion.mp4';
    }

Como você pode ver acima, estamos convertendo qualquer arquivo que obtemos para um PNG com o nome promotion.png, para facilitar a busca e aceitamos apenas o formato de vídeo .mp4. Por esse motivo, não precisamos nos preocupar em verificar se o arquivo existe e se é possível substituí-lo. É por isso que você pode ver no código que excluímos qualquer arquivo existente com esse nome antes de salvar.

O HTML era apenas uma entrada com um tipo de "arquivo:

<input type="file" id="img_path" name="img_path" class="promo-img-path" accept="image/*">

Estamos usando o Angular agora, então não posso mais enviar os itens acima através de um formulário HTML. É isso que eu preciso descobrir como fazer.

Somos dois desenvolvedores apenas fazendo o nosso melhor, por isso tenho certeza de que há uma maneira melhor de fazer isso. No entanto, antes de refatorar tudo isso, espero poder usar o Angular (ou jQuery como último recurso) para enviar ao controlador os dados de arquivo que o Laravel precisa para que o código acima funcione. A resposta pode ser tão simples quanto "envie um PUT para o método nesse controlador acima, mas, em vez de uma carga JSON normal, use as informações do arquivo nesse formato e você poderá reuni-las com ..."

Também gostaria de receber dicas sobre maneiras melhores de fazer isso no futuro.

questionAnswers(1)

yourAnswerToTheQuestion