#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