实例
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="542488"> <FIELDSET> <LEGEND>文件上传</LEGEND> <p><span>选择文件</span><input type="file" name="upload"></p> </FIELDSET> <p style="text-align: center"><button type="submit" name="submit">上传</button></p> </form> <?php //系统变量$_FILES是一个二维数组,里面有很多我们要用到。文件上传控件,就是name属性。常用的属性有以下几个: /* $_FILES['file']['name'];//文件名 $_FILES['file']['size'];//文件大小 $_FILES['fiel']['type'];//文件属性 $_FILES['fiel']['tmp_name];//文件临时路径 $_FILES['fiel']['error'];//文件错误代码 */ //在表单中,action里面可以填三种。 //第一种就是直接留空,也就是在当前文件中执行PHP代码。 //第二种就是直接写上当前文件名,就是在该文件路径中执行。 //第三种,也是最安全,起使用最好的就去。就是用$_SERVER['PHP_SELF'].在实际工作中要用htmlspecialchars()设置以免跨区域攻击。 if ($_SERVER['REQUEST_METHOD'] == 'POST') {//检查上传方法是不是POST上传 if (isset($_FILES['upload'])) {//检查是否有文件上传 $allow = ['image/jpg','image/gif','image/png'];//检查上传文件的格式 if (in_array($_FILES['upload']['type'],$allow)) {//判断上传文件的格式是不是allow里面的文件格式 //将文件上传移动到临时的目录下面 if (move_uploaded_file($_FILES['type']['tmp_name'],"upload/{$_FILES['upload']['name']}")) { echo '文件上传成功'; } }else { echo '文件格式不对,只允许上传JPG/GIF/PNG格式文件'; } } //进行上传错误,代码来判断上传的错误信息 if ($_FILES['upload']['error'] > 0) { echo '错误的原因是:'; switch ($_FILES['upload']['error']) { case 1: echo '文件超过了php.ini配置中设置的大小'; break; case 2: echo '文件超过了表单中常量设置的大小'; break; case 3: echo '仅有部分文件被上传'; break; case 4: echo '没有文件被上传'; break; case 6: echo '没有可用的临时文件夹'; break; case 7: echo '磁盘已满,写入失败'; break; case 8: echo '上传意外中止'; break; default: echo '系统未知错误'; break; } //将临时文件删除,这是为了保险起见 if (file_exists($_FILES['upload']['tmp_name']) && is_file($_FILES['upload']['tmp_name'])) { unlink($_FILES['upload']['tmp_name']); } } } else { echo '1'; } ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
总结:老师请帮忙看一下,我有几个地方还是不很明白,第一个就是
/将文件上传移动到临时的目录下面
if (move_uploaded_file($_FILES['type']['tmp_name'],"upload/{$_FILES['upload']['name']}")) {
echo '文件上传成功';
这短不是很明白,move_uploaded_file是个函数,就是将文件上传到upolad这个目录 下面吗,如果没有upload这个目录,系统会自己创建,对吗?