Я пытаюсь загрузить файл ajax. Я пробовал один и тот же скрипт в другом предложении. Он работал правильно. Но теперь он не работает. На стороне сервера я получаю 'Null' с var_dump($_FILES["uploadFiles"]);
и var_dump($_POST["uploadFiles"]);
возвращает пустой массив: массив (1) {[0] => строка (0) ""}
Так что я подозреваю, что некоторые проблемы с апача конфигурации/PHP ,
В одном из предложенных решений here обсуждается правила переадресации htaccess. Вот мой контент htaccess:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress</code>
Есть ли что-то не так с моим содержимым htaccess?
Если нет, то что еще может быть причиной того, что $ _FILES будет Нулевым?
Мои php.ini переменные:
post_max_size = 160M
upload_max_filesize = 100M
upload_tmp_dir = "/tmp/"
file_uploads = On
max_file_uploads = 20
Заранее спасибо за вашу помощь.
обновление:
Ответные заголовки в браузере:
Вот мой код:
<form class="inputF" id="entry_upload_form" action="" method="post" enctype="multipart/form-data">
<div class="field_text">
Attach file:
</div>
<input type="file" name="file1[]" id="file1"> <br>
<div class="field_text">
Attach file:
</div>
<input type="file" name="file2[]" id="file2"> <br>
<div class="field_text">
Attach file:
</div>
<input type="file" name="file3[]" id="file3"> <br>
<div class="buttonRow">
<button class="submit buttons greenButton">Post</button>
<button class="reset buttons blueButton">Reset</button>
</div>
</form>
часть моего JQuery:
var fileSelect = document.getElementById('file1');
files1 = fileSelect.files;
if(files1.length != 0) {
files[i] = fileSelect.files;
i++;
}
fileSelect = document.getElementById('file2');
files1 = fileSelect.files;
if(files1.length != 0) {
files[i] = fileSelect.files;
i++;
}
fileSelect = document.getElementById('file3');
files1 = fileSelect.files;
if(files1.length != 0) {
files[i] = fileSelect.files;
i++;
}
// Create a new FormData object.
var formData = new FormData();
// Loop through each of the selected files.
for (var i = 0; i < files.length; i++) {
var file = files[i];
// Add the file to the request.
formData.append('uploadFiles[]', file, file.name);
}
jQuery.ajax({
url: content_url + '/themes/Karma/entry-portal/ajax_upload.php', //Server script to process data
type: 'POST',
xhr: function() { // Custom XMLHttpRequest
var myXhr = jQuery.ajaxSettings.xhr();
if(myXhr.upload){ // Check if upload property exists
myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // For handling the progress of the upload
}
return myXhr;
},
//Ajax events
beforeSend: function() {
//jQuery("#wpboulevard_progressBar").show();
},
success: function (response) {
//jQuery('#wpboulevard_upload_status').html(response);
},
//error: errorHandler,
// Form data
data: formData,
//Options to tell jQuery not to process data or worry about content-type.
cache: false,
contentType: false,
processData: false
});
return false;
//On success
function completeHandler(){
jQuery().html('Files uploaded successfully');
}
//Progress handling function
function progressHandlingFunction(e){
if(e.lengthComputable){
jQuery('progress').attr({value:e.loaded,max:e.total});
}
}
});
Нет ошибок и предупреждений в журналах?/tmp доступна? Вот хороший контрольный список: http://stackoverflow.com/questions/3586919/why-would-files-be-empty-when-uploading-files-to-php – ficuscr
Вы просматривали запрос/ответ в консоли браузера ? –
Tried 'formData.append ('uploadFiles', file);' вместо 'formData.append ('uploadFiles []', file, file.name);'? См. Https://developer.mozilla.org/en-US/docs/Web/API/FormData#Browser_compatibility – guest271314