Как получить FormData в Laravel

Я отправляю данные формы из Angular 2 в Laravel API, чтобы сохранить записанный голос из RecordRTC js. Проверил имя файла, тип файла и файл большого двоичного объекта на консоли. это показывает. но не может получить в бэкэнд-коде Laravel.

 public uploadToServer() {
    let blob  = this.recordRTC instanceof Blob ? this.recordRTC : this.recordRTC.blob;
    let fileType = blob.type.split('/')[0] || 'audio';
    let fileName = (Math.random() * 1000).toString().replace('.', '');
    if (fileType === 'audio') {
      fileName += '.' + (!!navigator.mozGetUserMedia ? 'ogg' : 'wav');
    } else {
      fileName += '.webm';
    }
    // create FormData
    var formData: FormData = new FormData();
    console.info(fileName);
    console.info(blob);
    console.info(fileType);
    formData.append(fileType + '-filename', fileName);
    formData.append(fileType + '-blob', blob);
    console.info(formData);
    this.recordingService.saveRecording(formData).subscribe(
      data => this.saveRecordingSuccess(data),
      error => this.saveRecordingFail(error)
    );
  }

Код Laravel: -

 public function saveRecording(Request $request)
  {
    $fileName = '';
    $tempName = '';
    $file_idx = '';

    if (!empty($_FILES['audio-blob'])) {
        $file_idx = 'audio-blob';
        $fileName = $_POST['audio-filename'];
        $tempName = $_FILES[$file_idx]['tmp_name'];
    }
    if (empty($fileName) || empty($tempName)) {
        if (empty($tempName)) {
            echo 'Invalid temp_name: '.$tempName;
            return;
        }
        echo 'Invalid file name: '.$fileName;
        return;
    }
    $filePath = public_path('voiceRecording/' . $fileName);

    // make sure that one can upload only allowed audio/video files
    $allowed = array(
        'webm',
        'wav'
    );
    $extension = pathinfo($filePath, PATHINFO_EXTENSION);
    if (!$extension || empty($extension) || !in_array($extension, $allowed)) {
        echo 'Invalid file extension: '.$extension;
        return;
    }
    if (!move_uploaded_file($tempName, $filePath)) {
      // error code
        return;
    }
}

В коде laravel я не получаю никаких файлов и данных для публикации.

Возможно, вы захотите проверить какой-нибудь документ, это неправильный способ отправить файл с помощью FormData.

thefallen 18.06.2018 16:15

Отредактировал мой вопрос, пожалуйста, проверьте его один раз.

Maneesh Rao 18.06.2018 16:19

Вы не используете $_FILES в Laravel. Вы должны использовать $request->file('audio-blob'). Как предлагает @thefallen, вам следует прочитать о загрузке файлов с помощью Laravel. Что вы получите, если сделаете dd($request->files()) в своей функции saveRecording?

Niraj Shah 18.06.2018 22:54

Он отображается пустым.

Maneesh Rao 19.06.2018 07:10

Исправлена ​​проблема. var reader = new FileReader (); var data = {}; reader.readAsDataURL (this.recordRTC.getBlob ()); reader.onload = function () {данные = {значение: reader.result.split (',') [1], имя файла: имя файла, тип файла: тип файла}; console.info (reader.result.split (',') [1]); };

Maneesh Rao 19.06.2018 19:40
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
5
1 904
1

Ответы 1

Вы должны поместить в свою форму mime-тип, как в JQuery Ajax, иметь свойство

mimeType: "multipart/form-data"

это не помогает, formdata из браузера не помогает

Shreyan Mehta 10.11.2020 18:55

Shreyan, если у вас та же проблема, что и у Маниша, он нашел решение и добавил в свои комментарии, может быть, это поможет вам.

RafaelQm 11.11.2020 02:17

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

Shreyan Mehta 11.11.2020 14:44

Причиной пустого ответа может быть любая проверка, промежуточное ПО или что-то еще, до этого попробуйте отладить поток данных от вашего сообщения к бэкэнду. Делайте простой пост только с текстом и увеличивайте данные.

RafaelQm 11.11.2020 18:41

Хотя это тоже не помогло, но мне удалось получить данные формы на api, за которые я боролся в течение недели, скоро отправлю ответ

Shreyan Mehta 12.11.2020 21:18

Другие вопросы по теме