当网站需要支持用户上传图片时,使用 PHP 代码实现图片上传功能是比较常见的做法之一。下面是实现 PHP 图片上传的完整攻略。
第一步:准备 HTML 代码
在 HTML 中,使用 <input>
标签并指定 type=file
属性,创建一个文件选择框。用户点击此框选择图片后,浏览器会为你提供一个图片文件对象。
实现 HTML 代码示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<form action="upload.php" enctype="multipart/form-data" method="post">
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload" name="submit">
</form>
</body>
</html>
第二步:编写 PHP 代码
在 PHP 中,我们首先要获取刚才 HTML 中的文件对象,并保存在本地服务器上。这个过程可以通过 PHP 中的 $_FILES
数组和 move_uploaded_file
函数实现。其中 $_FILES
数组保存了上传的文件信息,move_uploaded_file
函数则是将文件移动至指定的文件夹中。
实现 PHP 代码示例一:
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// 检查上传文件是否符合要求
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
// 检查文件是否已经存在
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// 检查文件大小是否符合要求
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
// 允许上传的文件类型
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
// 如果上传文件符合规定,就保存在服务器上指定的位置
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>
实现 PHP 代码示例二:
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// 允许上传的文件类型
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
// 如果上传文件符合规定,就保存在服务器上指定的位置
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
// 创建缩略图
$image = null;
if($imageFileType == "jpg" || $imageFileType == "jpeg") {
$image = imagecreatefromjpeg($target_file);
} else if($imageFileType == "png") {
$image = imagecreatefrompng($target_file);
}
if($image != null) {
$thumbWidth = 300;
$thumbHeight = 300;
$width = imagesx($image);
$height = imagesy($image);
$newImage = imagecreatetruecolor($thumbWidth, $thumbHeight);
imagecopyresampled($newImage, $image, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $width, $height);
$thumbPath = "uploads/thumbs/" . basename($_FILES["fileToUpload"]["name"]);
imagejpeg($newImage, $thumbPath, 90);
imagedestroy($image);
imagedestroy($newImage);
echo "Thumbnail created at $thumbPath.";
}
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>
以上是 PHP 实现图片上传的完整攻略,第一个示例展示了基础的 PHP 图片上传代码实现,第二个示例加入了一个功能:在图片上传成功后,自动为图片创建一个 300 * 300 的缩略图,方便展示。当然,上述示例代码应该根据自己的需求进行优化和修改。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP图片上传代码 - Python技术站