Я хотел бы загрузить видео, используя ajax и php. 1. вопрос: Этот скрипт работает, если я изменяю видео на файл в этой строке:
form_data.append("video", document.getElementById('file').files[0]);
, а также на стороне сервера. Но, тем не менее, name in
form_data.append("name" ...
- это переменная, доступная на стороне сервера. Это действительно так?
вопрос: Однако моя цель - не загружать изображения, а видео. Этот скрипт не выполняет работу. Что я делаю не так? Заранее благодарны.
Это javascript файл
<!DOCTYPE html>
<html>
<head>
<title>Upload video using Ajax and PHP</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container" style="width:700px;">
<label>Select video</label>
<input type="file" name="file" id="file" />
</div>
</body>
</html>
<script>
$(document).ready(function(){
$(document).on('change', '#file', function(){
var name = document.getElementById("file").files[0].name;
var form_data = new FormData();
var extension = name.split('.').pop();
if(jQuery.inArray(extension, ['jpg','mp4']) == -1){
alert("Invalid video format");
}
else{
var oFReader = new FileReader();
oFReader.readAsDataURL(document.getElementById("file").files[0]);
form_data.append("video", document.getElementById('file').files[0]);
$.ajax({
url:"save_video.php",
method:"POST",
data: form_data,
contentType: false,
cache: false,
processData: false,
success:function(data)
{
console.log("success...");
}
});
}
});
});
</script>
, вот это save_video. php file
<?php
//save_video.php
if($_FILES["video"]["name"] != '')
{
$old_name = explode('.', $_FILES["video"]["name"]);
$extension = end($old_name);
$video_name = "new_name" . '.' . $extension;
$location = 'upload/' . $video_name;
move_uploaded_file($_FILES["video"]["tmp_name"], $location);
}
?>