PHP 实现简单单文件上传
无论是社区网站还是电商网站都离不开上传文件的功能,这里就用PHP实现简单单文件上传,后续还会写更复杂的 AJAX 和多文件上传。
代码
HTML表单:
<form action="server1.php" method="post" enctype="multipart/form-data">
<input type="file" name="img">
<input type="submit" value="上传文件">
</form>
默认的文件选择按钮会比较丑,如果想美化文件选择按钮可以把文件选择按钮隐藏,定义一个普通按钮,通过普通按钮来调用文件选择按钮的点击事件。
PHP代码:
<?php
$file = $_FILES['img']; // 把文件传给一个变量
// 判断是否有错误,error大于0说明有错误
if ($file['error'] > 0) {
exit('文件上传出错!错误码' . $file['error']); // 不在往下执行,输出错误码
}
if ($file['size'] > 1048576) { // 判断文件大小是否超过1M
exit('文件大小不能超过1M'); // 文件超过1M,不在往下执行
}
// 判断文件扩展名的方法有很多,这里就用正则表达式来判断扩展名
$re = "/\.jpg$|\.png$|\.gif$/"; // 用一个简单的正则表达式来判断扩展名
$extensionName = array(); // 用来接收扩展名的数组
preg_match($re, $file['name'], $extensionName); // 如果匹配成功会返回扩展名
// 如果数组大于0说明匹配成功
if (count($extensionName) < 1) {
exit('不支持的文件格式'); // 不在往下执行
}
// 把上传的文件移动到指定文件夹,成功返回true 失败返回false
if (move_uploaded_file($file['tmp_name'], 'files/' . $file['name'])) {
echo '文件上传成功';
}else {
echo '文件上传失败';
}
说明
$_FILES
全局数组可接收客户端上传的文件,第一个参数是表单的 input name
,第二个下标可以是 name
, type
, size
, tmp_name
或 error
,这里使用的表单的 input
名称就是 img
,
详细说明:
$_FILES['img']['name']
被上传文件的名称$_FILES['img']['size']
被上传文件的大小,以字节计$_FILES['img']['type']
被上传文件的类型$_FILES['img']['tmp_name']
存储在服务器的文件的临时副本的名称$_FILES['img']['error']
由文件上传导致的错误代码
错误代码说明:
0
没有错误1
上传的文件超过了 php.ini 中upload_max_filesize
选项限制的值2
上传文件的大小超过了 HTML 表单中MAX_FILE_SIZE
选项指定的值3
文件只有部分被上传4
没有文件被上传。 是指表单的file域没有内容
move_uploaded_file()
函数可以把上传的文件移动到指定文件夹,参数1是文件位置,参数2是文件名,同时也包含文件路径,成功会返回true,失败会返回false。
版权声明:本文为原创文章,版权归 Mr. Ma's Blog 所有,转载请联系博主获得授权。
本文地址:https://www.misterma.com/archives/17/
如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。