写一个完整的表单上传的样例
时间: 2024-02-13 13:03:27 浏览: 84
表单提交实例
好的,以下是一个完整的表单上传的样例:
HTML代码:
```html
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="上传文件" name="submit">
</form>
```
上述代码中,`form`元素的`action`属性指定了表单提交的URL,`method`属性指定了提交方式为`post`,`enctype`属性指定了表单数据的编码方式为`multipart/form-data`,这是用于上传文件的标准编码方式。
`input`元素的`type`属性为`file`,表示这是一个文件上传的控件。`name`属性指定了后台接收该文件的参数名,这里为`fileToUpload`。`id`属性用于设置该控件的ID。
`input`元素的`type`属性为`submit`,表示这是一个提交按钮。`value`属性指定了按钮上显示的文本,这里为`上传文件`。`name`属性指定了该按钮的参数名,这里为`submit`。
PHP代码(upload.php):
```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) {
echo "该文件为图片 - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "该文件不是图片.";
$uploadOk = 0;
}
}
// 检查上传文件是否已存在
if (file_exists($target_file)) {
echo "该文件已存在.";
$uploadOk = 0;
}
// 检查上传文件的大小
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "该文件过大.";
$uploadOk = 0;
}
// 允许上传的文件类型
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "仅允许上传JPG, JPEG, PNG和GIF类型的文件.";
$uploadOk = 0;
}
// 检查上传是否成功
if ($uploadOk == 0) {
echo "上传失败.";
// 如果上传成功,则将文件移动到指定目录
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "文件" . basename($_FILES["fileToUpload"]["name"]) . "上传成功.";
} else {
echo "上传失败.";
}
}
?>
```
上述代码中,`$target_dir`变量指定了上传文件保存的目录,`$target_file`变量计算出了上传文件保存的完整路径。`$uploadOk`变量为上传是否成功的标志位,初值为1。`$imageFileType`变量通过`pathinfo()`函数获取了上传文件的扩展名。
首先通过`getimagesize()`函数检查上传文件是否为图片,如果是,则输出`该文件为图片 - MIME类型.`,并将`$uploadOk`标志位设置为1;否则输出`该文件不是图片.`,并将`$uploadOk`标志位设置为0。
再检查上传文件是否已存在,如果存在,则输出`该文件已存在.`,并将`$uploadOk`标志位设置为0。
然后检查上传文件的大小,如果超过了500KB,则输出`该文件过大.`,并将`$uploadOk`标志位设置为0。
最后检查上传文件的类型,如果不是JPG、JPEG、PNG或GIF类型的文件,则输出`仅允许上传JPG, JPEG, PNG和GIF类型的文件.`,并将`$uploadOk`标志位设置为0。
如果`$uploadOk`标志位为0,则输出`上传失败.`;否则将文件从临时目录移动到指定目录,并输出`文件xxx上传成功.`。
阅读全文