从一个最简单的php文件上传代码示例,先成功上传一张图片,然后开始分析文件上传原理及上传中需要用到的相关函数,这样我们就会清楚的理解php文件一个完整的上传流程,通过此流程再做进一步的优化升级就能完全掌握php文件上传这一实用知识点,开发出属于自己的php文件上传类。
先从一个简单的文件上传代码实例开始分析文件上传流程,代码如下:
HTML文件上传表单up.html:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>文件上传</title>
</head>
<body>
<p>最简单的文件上传测试</p>
<form method="post" action="up.php" enctype="multipart/form-data">
<label for="file">文件名:</label><input type="file" name="upfile" value=""><br>
<input type="submit" name="submit" value="提交">
</form>
</body>
</html>
说明:
<form> 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如上传文件内容,请使用 enctype="multipart/form-data",这就是告诉服务器我们要上传二级制的内容,做好接收准备。
<input> 标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。
接收表单上传来的数据文件up.php:
<?phpvar_dump($_FILES);
if(move_uploaded_file($_FILES['upfile']['tmp_name'],'./upload/'.$_FILES['upfile']['name'])){
echo '上传成功!';
}
?>
上面处理文件我使用了一个输出,$_FILES函数就是用来接收文件上传相关数据的,其包含着上传文件的全部信息,直接打印输出,输出结果如下:
array (size=1)'upfile' => array (size=5)'name' => string '012.jpg' (length=7)'type' => string 'image/jpeg' (length=10)'tmp_name' => string 'H:\wamp\tmp\php3858.tmp' (length=23)'error' => int 0'size' => int 49301上传成功!
上例具体说明:
通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。
第一个参数是表单的 input name,第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。就像这样:
$_FILES["upfile"]["name"] - 被上传文件的名称
$_FILES["upfile"]["type"] - 被上传文件的类型
$_FILES["upfile"]["size"] - 被上传文件的大小,以字节计
$_FILES["upfile"]["tmp_name"] - 存储在服务器的文件的临时副本的名称,也就是临时文件,该临时文件会随着当前php文件运行结束而消失。
$_FILES["upfile"]["error"] - 由文件上传导致的错误代码,错误代码为0-7数字,具体含义后面解释。
可以看出,$_FILES全局数组和我们平时用到的$_POST数组一样,只要我们充分利用$_FILES所包含的文件信息,就可以实现文件类型限制、上传大小限制、文件名设置等。
文件最后我使用了php函数move_uploaded_file()来移动上传的临时文件到指定位置,这里是最简单直接的做法,没有任何判断限制,通过该函数我们就初步实现了文件上传功能。
本文链接:https://my.lmcjl.com/post/1702.html
4 评论