Я много слышал об этом, но все еще не могу понять, как заставить его работать с $ .post. Я только недавно добавил этот тип файла ввода для загрузки изображения вместе с текстом, который будет go в моей базе данных. Я могу сделать это на стороне сервера, но не с ajax. Некоторые говорили, что используют объект FormData , но я все еще не могу заставить его работать.
Моя цель - просто переместить изображение в указанную c папку с AJAX и PHP. Что я не могу понять, так это как передать изображение из файла типа ввода с AJAX в PHP.
Коды, которые я привел ниже, приведены в качестве базовых c. Я мог бы сделать их для них чтобы было легко читать здесь.
Вот мой html
<form name="form" id="form" action="upload.php" method="post" enctype="multipart/form-data">
<input type="text" id="message" name="message"/>
<input type="file" id="imgupload" name="file" accept="image/jpeg, image/png, image/gif"/>
<input type="submit" id="submit" name="submit" value="Submit"/>
</form>
Вот мой Ajax звонок
$(document).on("click", "#submit", function() {
var message = $("#message").val();
var form = $("#form")[0]; //this is what I'm trying to figure out
var form_data = new FormData(form); //this is what I'm trying to figure out
$.post("upload.php", {
message: message,
form_data //this is what i'm trying to pass to upload.php but doesn't work
}, function(data) {
// success msg
};
});
Вот мой php:
if($_FILES['file']['name'] != '') {
$filename = $_FILES['file']['tmp_name']
$path = $_FILES['file']['name'];
$fullpath = "../uploads/images/".$path;
move_uploaded_file($filename, $fullpath);
$message = $_POST['message']; //this is for the message in input text, you may ignore
$messageQuery = "insert to db...." //this is for my insert query for database, you may ignore
mysqli_query($conn, messageQuery) //again this is just a query for database, you may ignore
}
else {
echo "Failed to upload";
}