PHP是一种广泛使用的服务器端脚本语言,特别适用于Web开发。AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个页面的情况下,能够更新部分网页的技术。结合PHP和AJAX可以实现图片的异步上传。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>PHP AJAX 图片上传</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<form id="uploadForm" enctype="multipart/form-data">
<input type="file" name="image" id="image">
<button type="button" onclick="uploadImage()">上传</button>
</form>
<div id="result"></div>
<script>
function uploadImage() {
var formData = new FormData($('#uploadForm')[0]);
$.ajax({
url: 'upload.php',
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function(response) {
$('#result').html(response);
},
error: function() {
$('#result').html('上传失败,请重试。');
}
});
}
</script>
</body>
</html>
<?php
if (isset($_FILES['image'])) {
$file = $_FILES['image'];
$fileName = $file['name'];
$fileTmpName = $file['tmp_name'];
$fileSize = $file['size'];
$fileError = $file['error'];
$fileExt = explode('.', $fileName);
$fileActualExt = strtolower(end($fileExt));
$allowed = array('jpg', 'jpeg', 'png', 'gif');
if (in_array($fileActualExt, $allowed)) {
if ($fileError === 0) {
if ($fileSize < 1000000) { // 限制文件大小为1MB
$fileNameNew = uniqid('', true) . "." . $fileActualExt;
$fileDestination = 'uploads/' . $fileNameNew;
if (move_uploaded_file($fileTmpName, $fileDestination)) {
echo "上传成功!";
} else {
echo "上传失败!";
}
} else {
echo "文件太大!";
}
} else {
echo "上传错误!";
}
} else {
echo "不允许的文件类型!";
}
}
?>
upload_max_filesize
和post_max_size
设置,确保文件类型在允许的范围内,并检查服务器上传目录的权限。getimagesize()
函数来验证文件的实际类型,而不仅仅是扩展名。通过以上信息,你应该能够实现一个基本的PHP AJAX图片上传功能,并解决常见的上传问题。
领取专属 10元无门槛券
手把手带您无忧上云