Спасибо 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 используйте информацию о файле в этом формате, и вы можете собрать эту информацию с помощью ...»
Буду также признателен за любые советы о том, как я могу сделать это в будущем.