AngularJS sube múltiples archivos con FormData API

Necesito cargar archivos de imagen y video al servidor en una aplicación Angular usando Laravel 5.1 como back-end. Todas las solicitudes de Ajax deben ir primero al controlador Laravel, y tenemos el código allí para saber cómo se maneja el archivo cuando llega allí. Anteriormente, hemos realizado formularios HTML normales para enviar cargas de archivos al controlador, pero en este caso debemos evitar la actualización de la página de un formulario, por lo que estoy intentando esto en Ajax a través de Angular.

¿Qué información necesito enviar al controlador Laravel con Ajax que se estaba enviando al controlador a través de un formulario HTML anteriormente?

Este es el código en el controlador Laravel que manejó la información del archivo una vez que llegó allí. Eso es lo que necesito para descubrir cómo enviar, así que espero poder 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 puede ver arriba, estamos convirtiendo cualquier archivo que obtengamos a PNG con el nombre de archivo promotion.png para que sea fácil de obtener y solo aceptemos el formato de video .mp4. Debido a eso, no necesitamos preocuparnos por verificar si el archivo existe y está bien sobrescribirlo. Es por eso que puede ver en el código que eliminamos cualquier archivo existente con ese nombre antes de guardarlo.

El HTML era solo una entrada con un tipo de "archivo:

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

Estamos usando Angular ahora, así que ya no puedo enviar lo anterior a través de un formulario HTML. Eso es lo que necesito para descubrir cómo hacerlo.

Somos dos desarrolladores que solo estamos haciendo lo mejor, así que estoy seguro de que hay una mejor manera de hacerlo. Sin embargo, antes de refactorizar todo esto, espero poder usar Angular (o jQuery como último recurso) para enviar al controlador cualquier dato de archivo que Laravel necesite para que el código anterior funcione. La respuesta puede ser tan simple como "enviar un PUT al método en ese controlador anterior, pero en lugar de una carga útil JSON normal, use la información del archivo en este formato y puede recopilar esa información con ..."

También agradecería cualquier consejo sobre mejores formas de hacerlo en el futuro.

Respuestas a la pregunta(1)

Su respuesta a la pregunta