1.文件操作
<?php
/**
* 文件读取:
* r:从头开始读取文件
* w:没有就创建,有就删除文件类容,从头开始写
* a:没有就创建,从文件末尾开始写
* b:默认
*
* 写的时候不能读,不能够看文件是否存在,读的时候不能写
*
* 函数:
* 1.打开函数:
* fopen(filename,model)
*
* 2.读写
* 写:
* fwrite(resoure,data,length)
* fputs(resoure,data,length)
*
* 读:
* $ char = fgetc($fp)
* $string = fgets($fp)
* feof($fp):是否读取到文件末尾
* $arr =file(文件名)
* feof
* 3.关闭
* fcloce(resoure)
* 4.其他函数
* 文件是否存在:$int = file_exists(文件名)
* 确定文件大小: $int = filesize(文件名)
* unlink(文件名)
*/
$fp = fopen('./text.txt','w');
$arr = [1,2,3,4,5];
fwrite($fp,$arr,100);
fclose($fp);
$arr = file('./text.txt');
print_r($arr);
unlink('text.txt');
2.单文件上传
函数:in_array($a,$arr); isset($a);
is_uploaded_file(tmp文件名) ; move_uploaded_file($tmp文件, 目标文件) ;
```php
<?php
/**
- $_FILE[文件名][name]
- $_FILE[文件名][type]
- $_FILE[文件名][tmp_name]
- $_FILE[文件名][error]
- $_FILE[文件名][size]
判断文件是否是通过HTTPPOST上传的。- 如果 filename 所给出的文件是通过 HTTP POST 上传的则返回 TRUE。
*- pathinfo($tmp_name):返回文件相关信息
- [dirname]
- [basename]
- [extension]
- [filename]
*/
if(isset($_FILES))
{
printf(‘<pre>%s</pre>‘, print_r($_FILES, true));
$fileName = $_FILES[‘my_pic’][‘name’];
$tmp_name = $_FILES[‘my_pic’][‘tmp_name’];
if ($_FILES[‘my_pic’][‘error’] > 0) {} else {
$tip = '<span style="color: brown">上传错误</span><br>';
switch ($_FILES['my_pic']['error']) {
case 1:
$tip .= '超过PHP.ini中允许上传的最大文件大小';
break;
case 2:
$tip .= '超过MAX_FILE_SIZE中允许上传的最大文件大小';
break;
case 3:
$tip .= '文件只有部分上传';
break;
case 4:
$tip .= '没有文件上传';
break;
case 6:
$tip .= '找不到临时目录';
break;
case 7:
$tip .= '文件写入失败,请检测目录权限';
break;
};
echo $tip;
}
$path = pathinfo($tmp_name);
printf('<pre>%s</pre>', print_r($path, true));
//1.白名单
if (is_uploaded_file($fileName)) {
$type = ['jpg', 'png', 'gif', 'jpeg'];
if (is_array($path['extension'], $type)) {
$upPath = 'upload/' . md5($path['filename']) . $path['extension'];
if (move_uploaded_file($tmp_name, $upPath)) {
echo "<img src = '$upPath' style = 'width = 50px'>";
}
{
echo '<p>文件转移失败</p>';
}
} else {
echo '<p>文件格式错误</p>';
}
} else {
echo '<p>文件上传方法错误</p>';
}
}
?>
<!DOCTYPE html><html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<!--enctype:multipart/form-data是将文件以二进制的形式上传,这样可以实现多种类型的文件上传。-->
<!--application/x-www-form-urlencoded:默认的编码方式。但在用文本的传输和MP3等大型文件的时候,使用这种编码就显得效率低下。-->
<!--multipart/form-data:指定传输数据为二进制类型,比如图片,mp3,文件-->
<!--text/plain:纯文本的传输。空格转换为"+"号,但不对特殊字符编码。-->
<body>
<form method="post" action="" enctype="multipart/form-data">
<fieldset>
<legend>文件上传</legend>
<input type="file" name="my_pic" value="上传文件">
<button>提交</button>
</fieldset>
</form>
</body>
</html>
## 2.多文件上传
#### 1.上传多个文件一个一个判断
```php
<?php
/**
* $_FILE[文件名][name]
* $_FILE[文件名][type]
* $_FILE[文件名][tmp_name]
* $_FILE[文件名][error]
* $_FILE[文件名][size]
*
*判断文件是否是通过HTTPPOST上传的。
* 如果 filename 所给出的文件是通过 HTTP POST 上传的则返回 TRUE。
*
* pathinfo($tmp_name):返回文件相关信息
* [dirname]
* [basename]
* [extension]
* [filename]
*/
if(isset($_FILES))
{
foreach($_FILES as $file)
{
echo $file['error'];
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<!--enctype:multipart/form-data是将文件以二进制的形式上传,这样可以实现多种类型的文件上传。-->
<!--application/x-www-form-urlencoded:默认的编码方式。但在用文本的传输和MP3等大型文件的时候,使用这种编码就显得效率低下。-->
<!--multipart/form-data:指定传输数据为二进制类型,比如图片,mp3,文件-->
<!--text/plain:纯文本的传输。空格转换为"+"号,但不对特殊字符编码。-->
<body>
<form method="post" action="" enctype="multipart/form-data">
<fieldset>
<legend>文件上传</legend>
<input type="file" name="my_pic1" value="上传文件">
<input type="file" name="my_pic2" value="上传文件">
<input type="file" name="my_pic3" value="上传文件">
<button>提交</button>
</fieldset>
</form>
</body>
</html>
2.上传多个文件数组形式判断
<?php
// $_FILES
printf('<pre>%s</pre>', print_r($_FILES, true));
if (isset($_FILES['my_pic'])) {
foreach ($_FILES['my_pic']['error'] as $key=>$error) {
// 0 => UPLOAD_ERR_OK
if ($error === UPLOAD_ERR_OK) {
// 临时文件名
$tmpName = $_FILES['my_pic']['tmp_name'][$key];
// 原始文件名
$name = $_FILES['my_pic']['name'][$key];
// 暂不加密目标文件名
$dest = 'uploads/' . $name;
// 移动到目标目录中
move_uploaded_file($tmpName, $dest) ;
// 预览
echo "<img src='$dest' width='200'>";
}
}
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>多文件上传-2</title>
</head>
<body>
<form action="" method="POST" enctype="multipart/form-data">
<fieldset>
<legend>多文件上传-2:逐个上传</legend>
<input type="file" name="my_pic[]">
<input type="file" name="my_pic[]">
<input type="file" name="my_pic[]">
<button>上传</button>
</fieldset>
</form>
</body>
</html>