Спасибо georgeawg

ужно загрузить изображения и видеофайлы на сервер в приложении Angular, используя Laravel 5.1 в качестве серверной части. Все запросы Ajax должны сначала идти к контроллеру Laravel, и у нас есть код для того, как файл обрабатывается, когда он туда попадает. Ранее мы делали обычные HTML-формы для отправки файлов на контроллер, но в этом случае нам нужно избегать обновления страницы формы, поэтому я пытаюсь сделать это в Ajax через Angular.

Какую информацию мне нужно отправить контроллеру Laravel с Ajax, который ранее отправлялся контроллеру через форму HTML?

Это код в контроллере Laravel, который обрабатывал информацию о файле, как только он туда попал. Это то, что мне нужно, чтобы выяснить, как отправить, поэтому я надеюсь, что можно использовать этот код:

    $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';
    }

Как вы можете видеть выше, мы конвертируем любой файл, который мы получаем, в PNG с именем файла promo.png, поэтому его легко получить, и мы принимаем только видео формат .mp4. Из-за этого нам не нужно беспокоиться о проверке, существует ли файл, и можно ли его перезаписать. Вот почему вы можете видеть в коде, что мы удаляем любой существующий файл с таким именем перед сохранением.

HTML был просто вводом с типом «file»:

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

Сейчас мы используем Angular, поэтому я больше не могу просто отправить вышеперечисленное через форму HTML. Вот что мне нужно выяснить, как это сделать.

Мы два разработчика, которые прилагают все усилия, поэтому я уверен, что есть лучший способ сделать это. Однако, прежде чем я проведу рефакторинг всего этого, я надеюсь, что смогу использовать Angular (или jQuery в качестве крайней меры), чтобы просто отправить контроллеру все данные файла, которые нужны Laravel для работы вышеуказанного кода. Ответ может быть таким простым: «отправить PUT методу в указанном выше контроллере, но вместо обычной полезной нагрузки JSON используйте информацию о файле в этом формате, и вы можете собрать эту информацию с помощью ...»

Буду также признателен за любые советы о том, как я могу сделать это в будущем.

Ответы на вопрос(1)

Ваш ответ на вопрос