用PHP上传实现只上传图片并保持原文件名

需要有登录验证,jpg图片(不大于300kb)仅限于上传到指定目录,php文件不能有权限操作和浏览目录功能,上传的图片重名覆盖。

$face=$_FILES['face'];
if($face['size']<0){
    echo '上传文件为空';
    exit;
}
//判断文件格式
$arr=array('jpg','png','gif')
$arrs=explode('.',$face['name']);
$ext=$arrs[count($arrs)-1];
if(!in_array($ext,$arr)){
    echo '文件格式错误!';
    exit;
}
//判断上传大小
if($face['size']>307200){
    echo '文件大小已超出限制范围!';
    exit;
}
$dir='faces';//文件上传目录
$upload=copy($face['tmp_name'],$dir.'/'.$face['name']);
if($upload=false){
    echo '文件上传失败!';
    exit;
}

追问

  $arrs=explode('.',$face['name']);
是不是有错误?

我不懂php,您能否把完整的可以直接上传使用的源码发出来

追答/*
 * 功     能:单文件上传upload_imag
 * 返回值类型:数组
 * 参     数:$face:获取上传文件信息,必填
        $ext_arr:指定文件上传类型,为数组,可选
      $size:限制上传文件大小默认2M,可选
      $dir:文件上传的目录名称,可选
      $name: 文件名,留空则随机取名不带后缀名  可选
 */
function upload_imag($face,$dir='faces',$name='',$ext_arr=array('jpg','png','gif'),$size=2097152){
if($face['size']>0){
if(!is_dir($dir)){
mkdir($dir);
}
$arrs=explode('.',$face['name']);
$ext=$arrs[count($arrs)-1];
if(!in_array($ext,$ext_arr)){
echo '文件格式错误!';
exit;
}
if($face['size']>$size){
echo '文件大小已超出限制范围!';
exit;
}
if(empty($name)){
$newname=date('YmdHis',time()).rand(1000,9999).'.'.$ext;
}else{
$newname=$name.'.'.$ext;
}
$upload_face=copy($face['tmp_name'],$dir.'/'.$newname);
if($upload_face=false){
echo '文件上传失败!';
exit;
}
return $newname;//上传成功,返回文件名
}else{
return '';//上传文件为空,则返回空
}
}


这是php上传文件封装的函数,你看参数说明填写吧。望采纳!

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答