#php #jquery #ajax
#php #jquery #ajax
Вопрос:
Я просмотрел много разных вопросов, и я до сих пор не смог найти ошибку в своем коде. Я в основном пытаюсь загрузить файл на сервер, используя html / ajax и php для серверной части. Ниже приведен мой код:
//HTML
<div class="col-sm-6">
<div class="">
<input name="bugType" type="text" class="bugType">
</div>
</div>
<div class="col-sm-6">
<div class="upload">
<input name="bugImage" type="file" class="bugImage">
</div>
</div>
//JS
$("#addBug").on('click', function (event) {
event.preventDefault();
var bugType = $('input[name="bugType"]').val();
var imageName = $('input[name="bugImage"]');
fd = new FormData();
fd.append("type", "add");
fd.append("imageName", imageName);
fd.append("bugType", bugType);
$.ajax({
url: 'classes/bug-class.php',
type: "POST",
dataType: "json",
data: fd ,
enctype: 'multipart/form-data',
contentType: false,
processData: false,
success: function (data) {
alert("SUCCESS");
alert(data);
},
error: function (data) {
alert("FAILURE");
console.log(data);
}
});
});
//PHP
$type = $_POST['bugType'];
$image = $_POST['imageName'][0];
echo $image; //PRINTS OUT [
Если я изменю:
$image = $_FILES['imageName']
echo $image // PRINTS OUT ""
Спасибо за помощь!
//РЕДАКТИРОВАТЬ
FileList {0: File, length: 1}
0
:
File
lastModified
:
1475177716000
lastModifiedDate
:
Thu Sep 29 2016 14:35:16 GMT-0500 (CDT)
name
:
"17-3.png"
size
:
187682
type
:
"image/png"
webkitRelativePath
:
«»
прото
:
Файл
длина
:
1
прото
:
Список файлов
var_dump($_FILES) // output -> array(0)
//РАБОТАЕТ
пришлось изменить на это:
fd.append("imageName", imageName[0])
и тогда это сработало!
Комментарии:
1. попробуйте
console.log(fd)
опубликовать вывод.2.
$('input[name="bugImage"]')[0].files
3. @KarthikeyanSekar Теперь он отправляет файл, и я получаю на стороне php: object FileList … однако, когда я пытаюсь получить к нему доступ как обычно, получается то же самое
4.
$_FILES['bugImage']['name']
попробуйте это php.net/manual/en/features.file-upload.post-method.php
Ответ №1:
Вы напрямую отправляете элемент на свой SERVER
.
var imageName = $('input[name="bugImage"]');
var imageName = $('input[name="bugImage"]')[0].files;
Комментарии:
1. Хорошо, и какой будет php-сторона этого … разве это не должно быть стандартным $image = $_FILES[‘imageName
2. $_FILES[‘bugImage’][‘name’] попробуйте это php.net/manual/en/features.file-upload.post-method.php
3. хммм… Я пошел дальше и попробовал это, и он вывел «»
4. На самом деле я получаю: неопределенный индекс: imageName … это означает, что он не должен корректно нажимать на него
5. пришлось отправить fd.append(«imageName», imageName[0]), и тогда это сработало!