1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 使用php的图片上传类进行图片上传 总是提示:上传文件时出错 : 未允许类型 。都是

使用php的图片上传类进行图片上传 总是提示:上传文件时出错 : 未允许类型 。都是

时间:2023-01-05 18:26:24

相关推荐

使用php的图片上传类进行图片上传 总是提示:上传文件时出错 : 未允许类型 。都是

后端开发|php教程

php

后端开发-php教程

使用php的图片上传类进行图片上传,总是提示:上传文件时出错 : 未允许类型 。都是默认的配置

手机软件提取源码,ubuntu安装点库,查看tomcat服务器网址,Python爬虫职业分析,php测试管理系统源码,月嫂seolzw

$uploadImg= new FileUpload; if($uploadImg ->upload("head")){ echo

; var_dump($uploadImg ->getFileName()); echo

;

}else{

echo

fineui商城源码,vscode函数参数预览,ubuntu更新rar,tomcat插件启动不了,sqlite3条目切割,网易爬虫和开课吧爬虫,php 不能为空,江西抖音seo培训,网站源码交易网,模板编程网络编程lzw

; var_dump($uploadImg ->getErrorMsg()); echo

;

}

微擎0.6商业版源码,vscode请求ajax,ubuntu 充电,tomcat 打断点,易语言索引sqlite,帝国系统 会员中心插件,前端框架g6绘图,多脚红色爬虫柱状,php的rpm包,遵化seo优化机构,用ckplayer看的av网站,网页设计图片模板图片,5sing主页模板lzw

setOption($key, $val); } return $this; } /** * 调用该方法上传文件 * @param string $fileFile 上传文件的表单名称* @return bool 如果上传成功返回数true*/function upload($fileField) { $return = true; /* 检查文件路径是滞合法 */ if( !$this->checkFilePath() ) {$this->errorMess = $this->getError();return false; } /* 将文件上传的信息取出赋给变量 */ $name = $_FILES[$fileField][ ame]; $tmp_name = $_FILES[$fileField][ mp_name]; $size = $_FILES[$fileField][size]; $error = $_FILES[$fileField][error]; /* 如果是多个文件上传则$file["name"]会是一个数组 */ if(is_Array($name)){$errors=array();/*多个文件上传则循环处理 , 这个循环只有检查上传文件的作用,并没有真正上传 */for($i = 0; $i setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i] )) { if(!$this->checkFileSize() || !$this->checkFileType()){ $errors[] = $this->getError(); $return=false; } }else{ $errors[] = $this->getError(); $return=false; } /* 如果有问题,则重新初使化属性 */ if(!$return) $this->setFiles();} if($return){ /* 存放所有上传后文件名的变量数组 */ $fileNames = array(); /* 如果上传的多个文件都是合法的,则通过销魂循环向服务器上传文件 */ for($i = 0; $i setFiles($name[$i], $tmp_name[$i], $size[$i], $error[$i] )) { $this->setNewFileName(); if(!$this->copyFile()){$errors[] = $this->getError();$return = false; } $fileNames[] = $this->newFileName; } } $this->newFileName = $fileNames;}$this->errorMess = $errors;return $return; /*上传单个文件处理方法*/ } else {/* 设置文件信息 */if($this->setFiles($name,$tmp_name,$size,$error)) { /* 上传之前先检查一下大小和类型 */ if($this->checkFileSize() && $this->checkFileType()){ /* 为上传文件设置新文件名 */ $this->setNewFileName(); /* 上传文件 返回0为成功, 小于0都为错误 */ if($this->copyFile()){ return true; }else{ $return=false; } }else{ $return=false; }} else { $return=false; }//如果$return为false, 则出错,将错误信息保存在属性errorMess中if(!$return) $this->errorMess=$this->getError(); return $return; } } /*** 获取上传后的文件名称 * @param void没有参数 * @return string上传后,新文件的名称, 如果是多文件上传返回数组 */ public function getFileName(){ return $this->newFileName; } /** * 上传失败后,调用该方法则返回,上传出错信息 * @param void没有参数 * @return string返回上传文件出错的信息报告,如果是多文件上传返回数组 */ public function getErrorMsg(){ return $this->errorMess; }/* 设置上传出错信息 */ private function getError() { $str = "上传文件{$this->originName}时出错 : "; switch ($this->errorNum) {case 4: $str .= "没有文件被上传"; break;case 3: $str .= "文件只有部分被上传"; break;case 2: $str .= "上传文件的大小超过了HTML表单中MAX_FILE_SIZE选项指定的值"; break;case 1: $str .= "上传的文件超过了php.ini中upload_max_filesize选项限制的值"; break;case -1: $str .= "未允许类型"; break;case -2: $str .= "文件过大,上传的文件不能超过{$this->maxsize}个字节"; break;case -3: $str .= "上传失败"; break;case -4: $str .= "建立存放上传文件目录失败,请重新指定上传目录"; break;case -5: $str .= "必须指定上传文件的路径"; break;default: $str .= "未知错误"; } return $str.

; } /* 设置和$_FILES有关的内容 */ private function setFiles($name="", $tmp_name="", $size=0, $error=0) { $this->setOption(errorNum, $error); if($error)return false; $this->setOption(originName, $name); $this->setOption( mpFileName,$tmp_name); $aryStr = explode(".", $name); $this->setOption(fileType, strtolower($aryStr[count($aryStr)-1])); $this->setOption(fileSize, $size); return true; } /* 为单个成员属性设置值 */ private function setOption($key, $val) { $this->$key = $val; } /* 设置上传后的文件名称 */ private function setNewFileName() { if ($this->israndname) {$this->setOption( ewFileName, $this->proRandName());} else{ $this->setOption( ewFileName, $this->originName); } } /* 检查上传的文件是否是合法的类型 */ private function checkFileType() { if (in_array(strtolower($this->fileType), $this->allowtype)) {return true; }else {$this->setOption(errorNum, -1);return false; } }/* 检查上传的文件是否是允许的大小 */ private function checkFileSize() { if ($this->fileSize > $this->maxsize) {$this->setOption(errorNum, -2);return false; }else{return true; } } /* 检查是否有存放上传文件的目录 */ private function checkFilePath() { if(empty($this->path)){$this->setOption(errorNum, -5);return false; } if (!file_exists($this->path) || !is_writable($this->path)) {if (!@mkdir($this->path, 0755)) { $this->setOption(errorNum, -4); return false;} } return true; }/* 设置随机文件名 */ private function proRandName() {$fileName = date(YmdHis)."_".rand(100,999); return $fileName...$this->fileType; }/* 复制上传文件到指定的位置 */ private function copyFile() { if(!$this->errorNum) {$path = rtrim($this->path, /)./;$path .= $this->newFileName;if (@move_uploaded_file($this->tmpFileName, $path)) { return true;}else{ $this->setOption(errorNum, -3); return false;} } else {return false; } } }

回复内容:

使用php的图片上传类进行图片上传,总是提示:上传文件时出错 : 未允许类型 。都是默认的配置

$uploadImg= new FileUpload; if($uploadImg ->upload("head")){ echo

; var_dump($uploadImg ->getFileName()); echo

;

}else{

echo

; var_dump($uploadImg ->getErrorMsg()); echo

;

}

setOption($key, $val); } return $this; } /** * 调用该方法上传文件 * @param string $fileFile 上传文件的表单名称* @return bool 如果上传成功返回数true*/function upload($fileField) { $return = true; /* 检查文件路径是滞合法 */ if( !$this->checkFilePath() ) {$this->errorMess = $this->getError();return false; } /* 将文件上传的信息取出赋给变量 */ $name = $_FILES[$fileField][ ame]; $tmp_name = $_FILES[$fileField][ mp_name]; $size = $_FILES[$fileField][size]; $error = $_FILES[$fileField][error]; /* 如果是多个文件上传则$file["name"]会是一个数组 */ if(is_Array($name)){$errors=array();/*多个文件上传则循环处理 , 这个循环只有检查上传文件的作用,并没有真正上传 */for($i = 0; $i setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i] )) { if(!$this->checkFileSize() || !$this->checkFileType()){ $errors[] = $this->getError(); $return=false; } }else{ $errors[] = $this->getError(); $return=false; } /* 如果有问题,则重新初使化属性 */ if(!$return) $this->setFiles();} if($return){ /* 存放所有上传后文件名的变量数组 */ $fileNames = array(); /* 如果上传的多个文件都是合法的,则通过销魂循环向服务器上传文件 */ for($i = 0; $i setFiles($name[$i], $tmp_name[$i], $size[$i], $error[$i] )) { $this->setNewFileName(); if(!$this->copyFile()){$errors[] = $this->getError();$return = false; } $fileNames[] = $this->newFileName; } } $this->newFileName = $fileNames;}$this->errorMess = $errors;return $return; /*上传单个文件处理方法*/ } else {/* 设置文件信息 */if($this->setFiles($name,$tmp_name,$size,$error)) { /* 上传之前先检查一下大小和类型 */ if($this->checkFileSize() && $this->checkFileType()){ /* 为上传文件设置新文件名 */ $this->setNewFileName(); /* 上传文件 返回0为成功, 小于0都为错误 */ if($this->copyFile()){ return true; }else{ $return=false; } }else{ $return=false; }} else { $return=false; }//如果$return为false, 则出错,将错误信息保存在属性errorMess中if(!$return) $this->errorMess=$this->getError(); return $return; } } /*** 获取上传后的文件名称 * @param void没有参数 * @return string上传后,新文件的名称, 如果是多文件上传返回数组 */ public function getFileName(){ return $this->newFileName; } /** * 上传失败后,调用该方法则返回,上传出错信息 * @param void没有参数 * @return string返回上传文件出错的信息报告,如果是多文件上传返回数组 */ public function getErrorMsg(){ return $this->errorMess; }/* 设置上传出错信息 */ private function getError() { $str = "上传文件{$this->originName}时出错 : "; switch ($this->errorNum) {case 4: $str .= "没有文件被上传"; break;case 3: $str .= "文件只有部分被上传"; break;case 2: $str .= "上传文件的大小超过了HTML表单中MAX_FILE_SIZE选项指定的值"; break;case 1: $str .= "上传的文件超过了php.ini中upload_max_filesize选项限制的值"; break;case -1: $str .= "未允许类型"; break;case -2: $str .= "文件过大,上传的文件不能超过{$this->maxsize}个字节"; break;case -3: $str .= "上传失败"; break;case -4: $str .= "建立存放上传文件目录失败,请重新指定上传目录"; break;case -5: $str .= "必须指定上传文件的路径"; break;default: $str .= "未知错误"; } return $str.

; } /* 设置和$_FILES有关的内容 */ private function setFiles($name="", $tmp_name="", $size=0, $error=0) { $this->setOption(errorNum, $error); if($error)return false; $this->setOption(originName, $name); $this->setOption( mpFileName,$tmp_name); $aryStr = explode(".", $name); $this->setOption(fileType, strtolower($aryStr[count($aryStr)-1])); $this->setOption(fileSize, $size); return true; } /* 为单个成员属性设置值 */ private function setOption($key, $val) { $this->$key = $val; } /* 设置上传后的文件名称 */ private function setNewFileName() { if ($this->israndname) {$this->setOption( ewFileName, $this->proRandName());} else{ $this->setOption( ewFileName, $this->originName); } } /* 检查上传的文件是否是合法的类型 */ private function checkFileType() { if (in_array(strtolower($this->fileType), $this->allowtype)) {return true; }else {$this->setOption(errorNum, -1);return false; } }/* 检查上传的文件是否是允许的大小 */ private function checkFileSize() { if ($this->fileSize > $this->maxsize) {$this->setOption(errorNum, -2);return false; }else{return true; } } /* 检查是否有存放上传文件的目录 */ private function checkFilePath() { if(empty($this->path)){$this->setOption(errorNum, -5);return false; } if (!file_exists($this->path) || !is_writable($this->path)) {if (!@mkdir($this->path, 0755)) { $this->setOption(errorNum, -4); return false;} } return true; }/* 设置随机文件名 */ private function proRandName() {$fileName = date(YmdHis)."_".rand(100,999); return $fileName...$this->fileType; }/* 复制上传文件到指定的位置 */ private function copyFile() { if(!$this->errorNum) {$path = rtrim($this->path, /)./;$path .= $this->newFileName;if (@move_uploaded_file($this->tmpFileName, $path)) { return true;}else{ $this->setOption(errorNum, -3); return false;} } else {return false; } } }

问题解决了。在from表单少写了一个data属性

你的$this->fileType 在哪赋值的

你在new FileUpload之后没有设置过所允许的文件类型(扩展名),所以默认的为jpg,jpeg,gif,png.

然后你所反馈的出错信息为:未允许类型, 在代码中对应的是errorNum等于-1的情况.

然后查找 设置为-1时的代码如下:

所以结合目前的代码,得出的结论为:你在上传的时候,上传的文件扩展名不在默认允许的范围内.

即:in_array(strtolower($this->fileType), $this->allowtype)这个条件检测失败.

根据你提供的代码, 本地测试的效果如下:

上传时选择的文件为QQ截图1112092309.jpg

上传时选择的文件为sina.html

附完整的测试代码:

setOption($key, $val); } return $this; } /** * 调用该方法上传文件 * @param string $fileFile 上传文件的表单名称* @return bool 如果上传成功返回数true*/function upload($fileField) { $return = true; /* 检查文件路径是滞合法 */ if( !$this->checkFilePath() ) {$this->errorMess = $this->getError();return false; } /* 将文件上传的信息取出赋给变量 */ $name = $_FILES[$fileField][ ame]; $tmp_name = $_FILES[$fileField][ mp_name]; $size = $_FILES[$fileField][size]; $error = $_FILES[$fileField][error]; /* 如果是多个文件上传则$file["name"]会是一个数组 */ if(is_Array($name)){$errors=array();/*多个文件上传则循环处理 , 这个循环只有检查上传文件的作用,并没有真正上传 */for($i = 0; $i setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i] )) { if(!$this->checkFileSize() || !$this->checkFileType()){ $errors[] = $this->getError(); $return=false; } }else{ $errors[] = $this->getError(); $return=false; } /* 如果有问题,则重新初使化属性 */ if(!$return) $this->setFiles();} if($return){ /* 存放所有上传后文件名的变量数组 */ $fileNames = array(); /* 如果上传的多个文件都是合法的,则通过销魂循环向服务器上传文件 */ for($i = 0; $i setFiles($name[$i], $tmp_name[$i], $size[$i], $error[$i] )) { $this->setNewFileName(); if(!$this->copyFile()){$errors[] = $this->getError();$return = false; } $fileNames[] = $this->newFileName; } } $this->newFileName = $fileNames;}$this->errorMess = $errors;return $return; /*上传单个文件处理方法*/ } else {/* 设置文件信息 */if($this->setFiles($name,$tmp_name,$size,$error)) { /* 上传之前先检查一下大小和类型 */ if($this->checkFileSize() && $this->checkFileType()){ /* 为上传文件设置新文件名 */ $this->setNewFileName(); /* 上传文件 返回0为成功, 小于0都为错误 */ if($this->copyFile()){ return true; }else{ $return=false; } }else{ $return=false; }} else { $return=false; }//如果$return为false, 则出错,将错误信息保存在属性errorMess中if(!$return) $this->errorMess=$this->getError(); return $return; } } /*** 获取上传后的文件名称 * @param void没有参数 * @return string上传后,新文件的名称, 如果是多文件上传返回数组 */ public function getFileName(){ return $this->newFileName; } /** * 上传失败后,调用该方法则返回,上传出错信息 * @param void没有参数 * @return string返回上传文件出错的信息报告,如果是多文件上传返回数组 */ public function getErrorMsg(){ return $this->errorMess; }/* 设置上传出错信息 */ private function getError() { $str = "上传文件{$this->originName}时出错 : "; switch ($this->errorNum) {case 4: $str .= "没有文件被上传"; break;case 3: $str .= "文件只有部分被上传"; break;case 2: $str .= "上传文件的大小超过了HTML表单中MAX_FILE_SIZE选项指定的值"; break;case 1: $str .= "上传的文件超过了php.ini中upload_max_filesize选项限制的值"; break;case -1: $str .= "未允许类型"; break;case -2: $str .= "文件过大,上传的文件不能超过{$this->maxsize}个字节"; break;case -3: $str .= "上传失败"; break;case -4: $str .= "建立存放上传文件目录失败,请重新指定上传目录"; break;case -5: $str .= "必须指定上传文件的路径"; break;default: $str .= "未知错误"; } return $str.

; } /* 设置和$_FILES有关的内容 */ private function setFiles($name="", $tmp_name="", $size=0, $error=0) { $this->setOption(errorNum, $error); if($error)return false; $this->setOption(originName, $name); $this->setOption( mpFileName,$tmp_name); $aryStr = explode(".", $name); $this->setOption(fileType, strtolower($aryStr[count($aryStr)-1])); $this->setOption(fileSize, $size); return true; } /* 为单个成员属性设置值 */ private function setOption($key, $val) { $this->$key = $val; } /* 设置上传后的文件名称 */ private function setNewFileName() { if ($this->israndname) {$this->setOption( ewFileName, $this->proRandName());} else{ $this->setOption( ewFileName, $this->originName); } } /* 检查上传的文件是否是合法的类型 */ private function checkFileType() { if (in_array(strtolower($this->fileType), $this->allowtype)) {return true; }else {$this->setOption(errorNum, -1);return false; } }/* 检查上传的文件是否是允许的大小 */ private function checkFileSize() { if ($this->fileSize > $this->maxsize) {$this->setOption(errorNum, -2);return false; }else{return true; } } /* 检查是否有存放上传文件的目录 */ private function checkFilePath() { if(empty($this->path)){$this->setOption(errorNum, -5);return false; } if (!file_exists($this->path) || !is_writable($this->path)) {if (!@mkdir($this->path, 0755)) { $this->setOption(errorNum, -4); return false;} } return true; }/* 设置随机文件名 */ private function proRandName() {$fileName = date(YmdHis)."_".rand(100,999); return $fileName...$this->fileType; }/* 复制上传文件到指定的位置 */ private function copyFile() { if(!$this->errorNum) {$path = rtrim($this->path, /)./;$path .= $this->newFileName;if (@move_uploaded_file($this->tmpFileName, $path)) { return true;}else{ $this->setOption(errorNum, -3); return false;} } else {return false; } } }if(isset($_GET[upload])){ $uploadImg= new FileUpload; if($uploadImg->upload("head")){ echo

; var_dump($uploadImg ->getFileName()); echo

;

}else{

echo

; var_dump($uploadImg ->getErrorMsg()); echo

;

}

}

?>

使用php的图片上传类进行图片上传 总是提示:上传文件时出错 : 未允许类型 。都是默认的配置

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。