文件上传的原理
客户端将传输的文件转换成二进制码,传到服务器,服务器将二进制对应成为文件,并临时存储在缓存池(临时文件)
供php操作存储期限为半小时,当php完成存写操作后会清除缓存池
文件的上传,其实就是把该临时文件移动到指定的位置的过程
话不多说,我们来实操一下
前端代码
<!--表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。
默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;
只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作.-->
<form action="file.php" method="post" enctype="multipart/form-data">
<input type="file" value="" name="file"/>
<input type="submit" value="提交"/>
</form>
后台操作
<?php
//拿到文件
$file=$_FILES['file'];
//临时文件存放路径
$fileTmp = $file['tmp_name'];
//文件名(带后缀)
$fileName = $file['name'];
//文件文件类型
$fileType = $file['type'];
//文件大小(字节)
$fileSize = $file['size'];
//错误,输出0,表示文件提交成功
$fileError = $file['error'];
if($fileError==0){
//判断文件类型
$file_type=['image/jpeg','image/png','application/pdf'];
if(!in_array($fileType,$file_type)){
echo '文件上传类型错误';
die;
}
//创建保存文件目录
if(!is_dir('./File')){
mkdir('./File');
}
//解决中文文件名问题
$name = iconv('utf-8', 'gb2312', $fileName);
//移动临时文件到指定目录
move_uploaded_file($fileTmp,'./File/'.$name);
echo "保存成功";
}else{
echo "保存失败";
}
?>
如果您觉得本篇内容不错,可以点个关注,给个赞
|
|