Как переместить ионный захват видео в file_put_contents() в php

#php #ionic3

#php #ionic3

Вопрос:

мы создали приложение ionic, которое захватывает видео, но мы сталкиваемся с проблемами сохранения этого видео в каталог на сервере. Я искал это в Интернете, но не смог найти учебник по этому поводу.

В приведенном ниже коде название видео было сохранено в папке videos вместо фактического видео

//Загрузить видео php часть

  $postjson = json_decode(file_get_contents('php://input'), true);

 if(!empty($postjson['video'])){
            $video = $postjson['video'];
            $now = DateTime::createFromFormat('U.u', microtime(true));
            $id = $now -> format('YmdHisu');
            $upload_folder = "videos";
            $path ="$upload_folder/$id.mp4";
            
            $actualpath = "http://url/incident/api/$path";
            file_put_contents($path,$video);
            
        
            }
 

В ионной части у меня есть это:

 captureVideo() {
    let options: CaptureVideoOptions = {
      limit: 1,
      duration: 120
    }
    this.mediaCapture.captureVideo(options).then((res: MediaFile[]) => {
      let capturedFile = res[0];
      let fileName = capturedFile.name;
      let dir = capturedFile['localURL'].split('/');
      dir.pop();
      let fromDirectory = dir.join('/');
      var toDirectory = this.file.dataDirectory;
      this.ivideo = fileName;
      this.viddir = dir;
      console.log("video captured " this.ivideo);
    
      this.file.copyFile(fromDirectory , fileName , toDirectory , fileName).then((res) => {
        this.storeMediaFiles([{name: fileName, size: capturedFile.size}]);
      },err => {
        console.log('err: ', err);
      });
          },
    (err: CaptureError) => console.error(err));
  }
 

Отправка на сервер с использованием метода post в сводке кода:

  var headers = new Headers();
      headers.append('Content-Type', 'application/json' );
    //headers.append('Access-Control-Allow-Methods', 'POST' );
    headers.append('Content-Type', 'multipart/form-data');
    let options = new RequestOptions({ headers: headers });

    
   
     let data = {
           aksi : 'insert_incident',
           title: this.title.value,
           descr: this.descr.value,
           images : this.cameraData,
           video: this.ivideo,
         };

   this.http.post(this.global.serverAddress "api/getCategories.php", data, options)
   .map(res => res.json())
   .subscribe(res => {
   
    loader.dismiss()
   if(res=="Done"){
     let alert = this.alertCtrl.create({
       title:"Done",
       subTitle: "Sent",
       buttons: ['OK']
       });
      
       alert.present();
   }else
   {
    let alert = this.alertCtrl.create({
    title:"ERROR",
    subTitle:(res),
    buttons: ['OK']
    });
   
    alert.present();
     } 
   }
 

Комментарии:

1. Итак, файл не сохраняется или вы не можете воспроизводить видео на сервере?

2. @nice_dev, имя было сохранено, но его можно было воспроизвести.

3. Затем, что-то связанное с отправкой двоичных данных. Можете ли вы увидеть правильный формат данных, отправляемых на вкладке сеть?

4. Зачем использовать входной поток? Не работает ли POST и $_FILE?

5. @nice_dev, да, в формате .mp4