首页> 基础笔记 >PHP基础学习 >文件处理 文件处理
PHP文件上传基础学习
作者:小萝卜 2019-08-27 【 PHP 文件 】 浏览 1064
简介PHP文件上传基础学习,客户端上传设置,在服务器端通过PHP处理上传,PHP配置文件中与文件上传有关的选项,$_FILES多维数组,常见数据格式(MIME),PHP的文件上传处理函数,上传示例
PHP文件上传基础学习
1.1 客户端上传设置
客户端文件上传的form表单:
<html>
<head><title>文件上传</title></head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
选择文件:<input type="file" name="myfile">
<input type="submit" value="上传文件">
</form>
</body>
</html>
注意几个特征属性:
1.2 在服务器端通过PHP处理上传
PHP配置文件中与文件上传有关的选项
指令名 |
默认值 |
功能描述 |
file_uploads |
ON |
是否开启文件上传 |
upload_max_filesize |
2M |
限制PHP处理上传文件大小的最大值,此值必须小于post_max_size |
post_max_size |
8M |
限制通过POST方法可以接受信息的最大值,也就是整个POST请求的提交值。此值必须大于upload_max_filesize |
upload_tmp_dir |
NULL |
上传文件存放的临时路径,可以是绝对路径。默认NULL则使用系统的临时目录。 |
$_FILES多维数组
存储在$_FILES["myfile"]["error"]中的值
伴随文件上传时产生的错误信息代码是在PHP4.2.0版本中引入的,具体如下:
错误值对应的常量
常见数据格式(MIME)
文件类型 |
MIME类型 |
图片文件 |
image/gif,image/jpg,image/jpeg,image/png,image/x-png |
纯文本和HTML |
text/txt,text/plain,text/html |
二进制文件 |
application/octet-stream |
音频格式 |
audio/basic |
视频格式 |
video/mpeg |
PHP的文件上传处理函数
上传示例:
<?php
$allowtype = array("gif", "png", "jpg"); //设置充许上传的类型为gif, png和jpg
$size = 1000000; //设置充许大小为1M(1000000字节)以内的文件
$path = "./uploads"; //设置上传后保存文件的路径
//1. 判断文件是否可以成功上传到服务器,$_FILES['myfile']['error'] 为0表示上传成功
if($_FILES['myfile']['error'] > 0) {
echo '上传错误: ';
switch ($_FILES['myfile']['error']) {
case 1: die('上传文件大小超出了PHP配置中的约定值:upload_max_filesize');
case 2: die('上传文件大小超出了表单中的约定值:MAX_FILE_SIZE');
case 3: die('文件只被部分上载');
case 4: die('没有上传任何文件');
case 6: die('找不到临时文件夹');
case 7: die('文件写入失败');
default: die('末知错误');
}
}
//2. 判断上传的文件是否为充许的文件类型,通过文件的后缀名
$hz = array_pop(explode(".", $_FILES['myfile']['name']));
//3. 通过判断文件的后缀方式,来决定文件是否是充许上传的文件类型
if(!in_array($hz, $allowtype)) {
die("这个后缀是<b>{$hz}</b>,不是充许的文件类型!");
}
//4. 判断上传的文件是否为充许大小
if($_FILES['myfile']['size'] > $size ) {
die("超过了充许的<b>{$size}</b>字节大小");
}
//5. 为了系统安全,也为了同名文件不会被覆盖,上传后将文件名使用系统定义
$filename = date("YmdHis").rand(100,999).".".$hz;
//6. 判断是否为上传文件
if (is_uploaded_file($_FILES['myfile']['tmp_name'])) {
if (!move_uploaded_file($_FILES['myfile']['tmp_name'], $path.'/'.$filename)) {
die('问题: 不能将文件移动到指定目录。');
}
}else{
die("问题: 上传文件{$_FILES['myfile']['name']}不是一个合法文件: ");
}
//7. 如果文件上传成功则输出
echo "文件{$upfile}上传成功,保存在{$path}中,大小为{$_FILES['myfile']['size']}字节";
很赞哦! (0)
上一篇:PHP完整的文件上传处理
下一篇:PHP自定义一个文件的复制函数