0
Привет так я работаю над формой загрузки файлов и все работает, но файл PHPUndefined индекс при отправке файла в PHP с помощью AJAX
HTML-:
<h2>Upload a new video</h2>
<p>THEN SET UP THE BASIC INFORMATION</p>
<form class="upf" method="post" enctype="multipart/form-data">
<h1><i class="icono-upArrow"></i></h1>
<input type="file" name="vid" id="video" />
</form>
JQuery:
$.fn.upload = function(remote,data,successFn,progressFn) {
// if we dont have post data, move it along
if(typeof data != "object") {
progressFn = successFn;
successFn = data;
}
return this.each(function() {
if($(this)[0].files[0]) {
var formData = new FormData();
formData.append($(this).attr("name"), $(this)[0].files[0]);
// if we have post data too
if(typeof data == "object") {
for(var i in data) {
formData.append(i,data[i]);
}
}
// do the ajax request
$.ajax({
url: remote,
type: 'POST',
xhr: function() {
myXhr = $.ajaxSettings.xhr();
if(myXhr.upload && progressFn){
myXhr.upload.addEventListener('progress',function(prog) {
var value = ~~((prog.loaded/prog.total) * 100);
// if we passed a progress function
if(progressFn && typeof progressFn == "function") {
progressFn(prog,value);
// if we passed a progress element
} else if (progressFn) {
$(progressFn).val(value);
}
}, false);
}
return myXhr;
},
data: formData,
dataType: "json",
cache: false,
contentType: false,
processData: false,
complete : function(res) {
var json;
try {
json = JSON.parse(res.responseText);
} catch(e) {
json = res.responseText;
}
if(successFn) successFn(json);
}
});
}
});
};
$("#video").change(function(){
$("#video").upload("includes/upload_vid.php", function(suess){
$.ajax({
url: 'includes/upload_vid.php',
success:function(data){
$(".tesst").html(data);
}
});
},$("#prog"));
});
теперь JQuery работает, и я получаю прогресс в своем баре прогресса , но PHP не делает этого, я думаю, потому что я AJAXing файл, как я проверяю информацию о файле в PHP, неправильно пу путь здесь является PHP код:
<?php
$video_err ="";
if($_FILES['vid']['type']=='video/mp4'){
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1023456789";
$randName = substr(str_shuffle($chars), 0 , 15);
if(file_exists('data/users/videos/'.$randName.''.$_FILES['vid']['name'])){
}// end of file exits
else {
$des = 'data/users/videos/'.$randName.''.$_FILES['vid']['name'];
if(move_uploaded_file($_FILES['vid']['tmp_name'], $des)){
$video_err.= "Done";
} else{
$video_err .= "Sorry something went wrong, please try later";
}
}
}// end of checking the file type[video]
else{
$video_err.= "Invaild File, sorry we now only accept .mp4 format";
}
echo $video_err;
Вся проблема в том, что $_FILES['vid']
не определен в то время как я сделал АЯКС файл так, что делать?
Попробуйте 'var_dump ($ _ FILES)' в начале –
он возвращает пустой массив! Я думаю, это должно было вернуть информацию о файле в массив! но все это возвращается array (0) { – SR11
Я пробовал свой код, и он работает на меня. откройте файл 'php.ini' и проверьте, установлено ли' file_uploads' 'ON' –