찾다
백엔드 개발PHP 튜토리얼PHP实现的多文件上传类及用法示例,_PHP教程

PHP实现的多文件上传类及用法示例,

本文实例讲述了PHP实现的多文件上传类及用法。分享给大家供大家参考,具体如下:

1、upFiles.css.php 文件

<&#63;php
class UploadFiles{
 private $maxsize = '1000000'; //允许上传文件最大长度
 private $allowtype = array('jpg','png','gif','jpeg');//允许上传文件类型
 private $israndfile = true;//是否随机文件名
 private $filepath;//上传路径
 private $originName;//上传的源文件
 private $tmpfileName;//临时文件名
 private $newfileName;//新文件名
 private $fileSize;//文件大小
 private $fileType;//文件类型
 private $errorNum = 0;//错误号
 private $errorMessg = array();//错误消息
 //对成员初始化
 function __construct($options = array()){
 foreach($options as $key=>$val){
  $key = strtolower($key);
  //查看传进来的数组里下标是否与成员属性相同
  //print_r(array_keys(get_class_vars(get_class($this))));
  if(!in_array($key,array_keys(get_class_vars(get_class($this))))){
  continue;
  }else{
  $this->setOption($key,$val);
  }
 }
 }
 private function setOption($key,$val){
   $this->$key = $val;
 //echo $this->errorNum."<br>";
 }
 //检查文件上传路径
 private function checkfilePath(){
 //echo $this->filepath;
 if(empty($this->filepath)){
  $this->setOption('errorNum',"-5");
  return false;
 }
 if(!file_exists($this->filepath) || !is_writable($this->filepath)){
  if(!@mkdir($this->filepath,0755)){
  $this->setOption('errorNum','-4');
  return false;
  }
 }
 return true;
 }
 //获取错误信息
 private function getError(){
 $str = "上传文件{$this->originName}出错---";
 switch($this->errorNum){
  case 4; $str .= "没有文件被上传";break;
  case 3; $str .= "文件只被部分上传";break;
  case 2; $str .= "超过文件表单允许大小";break;
  case 1; $str .= "超过php.ini中允许大小";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."<br>";
 }
 //检查文件类型
 private function checkfileType(){
 //echo $this->fileType;
 if(!in_array(strtolower($this->fileType),$this->allowtype)){
 $this->setOption('errorNum','-1');
  return false;
 }else{
  return true;
 }
 }
 //检查文件大小
 private function checkfileSize(){
 if($this->fileSize > $this->maxsize){
  $this->setOption('errorNum','-2');
  return false;
 }else{
  return true;
 }
 }
 //处理随机文件名称
 private function prorandFile(){
 $ch = $this->israndfile;
 if($ch == 'true'){
  return true;
 }else{
  return false;
 }
 }
 //
 private function setFiles($name="",$tmp_name="",$size="",$error=""){
 //检查上传路径
 if(!$this->checkfilePath()){
  //$this->errorMessg = $this->getError();
  return false;
 }
 //echo $error."<br>";
 if($error){
 $this->setOption('errorNum',$error);
  return false;
 }
 $arrstr  = explode('.',$name);
 $type   = end($arrstr);
 $this->setOption('originName',$name);
 $this->setOption('fileSize',$size);
 $this->setOption('fileType',$type);
 $this->setOption('tmpfileName',$tmp_name);
 return true;
 }
 //检查是否有文件上传
 function checkFile($formname){
 if(!@$_FILES[$formname]){
  $this->setOption('errorNum',4);
  return false;
 }else{
  return true;
 }
 }
 //上传文件
 function uploadeFile($formname){
 if(!$this->checkFile($formname)){
  $this->errorMessg = $this->getError();
  return false;
 }
 $return  = true;
 $name   = @$_FILES[$formname]['name'];
 $tmp_name = @$_FILES[$formname]['tmp_name'];
 $size   = @$_FILES[$formname]['size'];
 $error  = @$_FILES[$formname]['error'];
 //$type   = $_FILES[$formname]['type'];
 if(is_array($name)){
  $errors = array();
  for($i=0; $i<count($name); $i++){
  if($this->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){
  $newfileN = array();
  for($i=0; $i<count($name); $i++){
   if($this->setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i])){
   if(!$this->copyFile()){
    $errors[] = $this->getError();
    $return = false;
   }else{
    $newfileN[] = $this->newfileName;
   }
   }
   $this->newfileName = $newfileN;
  }
  }
  //print_r($errors);
  $this->errorMessg = $errors;
  //echo $errors;
  return $return;
 }else{
  if($this->setFiles($name,$tmp_name,$size,$error)){
  $return = true;
  if($error) var_dump($error);
  if($this->checkfileSize() && $this->checkfileType()){
  }else{
   $return = false;
  }
  }else{
  $return = false;
  }
  if(!$return){
  $this->errorMessg = $this->getError();
  }
  return $return;
 }
 }
 //获取上传后的文件名
 function getnewFile(){
  return $this->newfileName;
 }
 //把文件拷贝到指定的路径
 function copyFile(){
 $filepath = rtrim($this->filepath,'/')."/";
 if(!$this->errorNum){
  if($this->prorandFile()){
   $this->newfileName = date('Ymdhis').rand(1000,9999).".".$this->fileType;
  }else{
   $this->newfileName = $this->originName;
  }
  if(!move_uploaded_file($this->tmpfileName,$filepath.$this->newfileName)){
  $this->setOption('errorNum',-3);
  return false;
  }else{
  return true;
  }
 }else{
  return false;
 }
 }
 //上传错误后返回的消息
 function gteerror(){
  $err = $this->errorMessg;
 return $err;
 }
 }
&#63;>

2、使用方法

uploade.php 文件:

<&#63;php
//print_r($_FILES['spic']);
header('Content-Type:text/html;charset=utf-8');
//if(@$_FILES['spic'])echo "ddddddddd";;
include('upFiles.css.php');
$upfile = new UploadFiles(array('filepath'=>'./upload','allowtype'=>array('php','bmp','gif','jpg','png'),'israndfile'=>true,'maxsize'=>'1000000'));
if($upfile ->uploadeFile('spic')){
 $arrfile = $upfile ->getnewFile();
 foreach($arrfile as $v){
 echo $v,"<br/>";
 }
 echo "上传成功!";
}else{
 $err = $upfile ->gteerror();
 if(is_array($err)){
 foreach($err as $v1){
  echo $v1,"<br/>";
 }
 }else{
 echo $err;
 }
 //var_dump($err);
}
//var_dump($upfile);
&#63;>

HTML 文件:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">
function Check(){
 //alert('dddd');
 for(i=1; i<9; i++){
 if(document.getElementById('v'+i).value == ''){
  document.getElementById('v'+i).name = 'uu';
 }
 }
}
</script>
</head>
<body>
<form name="upfile" action="uploade.php" method="post" enctype="multipart/form-data">
<input type="file" name="spic[]" id="v1" /><br/>
<input type="file" name="spic[]" id="v2" /><br/>
<input type="file" name="spic[]" id="v3" /><br/>
<input type="file" name="spic[]" id="v4" /><br/>
<input type="file" name="spic[]" id="v5" /><br/>
<input type="file" name="spic[]" id="v6" /><br/>
<input type="file" name="spic[]" id="v7" /><br/>
<input type="file" name="spic[]" id="v8" /><br/>
<input type="submit" name="sub" value="提交" onclick="return Check()" />
<input type="reset" name="res" value="重填" />
</form>
</body>
</html>

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php文件操作总结》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1123792.htmlTechArticlePHP实现的多文件上传类及用法示例, 本文实例讲述了PHP实现的多文件上传类及用法。分享给大家供大家参考,具体如下: 1、upFiles.css.php...
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
PHP : 서버 측 스크립팅 언어 소개PHP : 서버 측 스크립팅 언어 소개Apr 16, 2025 am 12:18 AM

PHP는 동적 웹 개발 및 서버 측 응용 프로그램에 사용되는 서버 측 스크립팅 언어입니다. 1.PHP는 편집이 필요하지 않으며 빠른 발전에 적합한 해석 된 언어입니다. 2. PHP 코드는 HTML에 포함되어 웹 페이지를 쉽게 개발할 수 있습니다. 3. PHP는 서버 측 로직을 처리하고 HTML 출력을 생성하며 사용자 상호 작용 및 데이터 처리를 지원합니다. 4. PHP는 데이터베이스와 상호 작용하고 프로세스 양식 제출 및 서버 측 작업을 실행할 수 있습니다.

PHP 및 웹 : 장기적인 영향 탐색PHP 및 웹 : 장기적인 영향 탐색Apr 16, 2025 am 12:17 AM

PHP는 지난 수십 년 동안 네트워크를 형성했으며 웹 개발에서 계속 중요한 역할을 할 것입니다. 1) PHP는 1994 년에 시작되었으며 MySQL과의 원활한 통합으로 인해 개발자에게 최초의 선택이되었습니다. 2) 핵심 기능에는 동적 컨텐츠 생성 및 데이터베이스와의 통합이 포함되며 웹 사이트를 실시간으로 업데이트하고 맞춤형 방식으로 표시 할 수 있습니다. 3) PHP의 광범위한 응용 및 생태계는 장기적인 영향을 미쳤지 만 버전 업데이트 및 보안 문제에 직면 해 있습니다. 4) PHP7의 출시와 같은 최근 몇 년간의 성능 향상을 통해 현대 언어와 경쟁 할 수 있습니다. 5) 앞으로 PHP는 컨테이너화 및 마이크로 서비스와 같은 새로운 도전을 다루어야하지만 유연성과 활발한 커뮤니티로 인해 적응력이 있습니다.

PHP를 사용하는 이유는 무엇입니까? 설명 된 장점과 혜택PHP를 사용하는 이유는 무엇입니까? 설명 된 장점과 혜택Apr 16, 2025 am 12:16 AM

PHP의 핵심 이점에는 학습 용이성, 강력한 웹 개발 지원, 풍부한 라이브러리 및 프레임 워크, 고성능 및 확장 성, 크로스 플랫폼 호환성 및 비용 효율성이 포함됩니다. 1) 배우고 사용하기 쉽고 초보자에게 적합합니다. 2) 웹 서버와 우수한 통합 및 여러 데이터베이스를 지원합니다. 3) Laravel과 같은 강력한 프레임 워크가 있습니다. 4) 최적화를 통해 고성능을 달성 할 수 있습니다. 5) 여러 운영 체제 지원; 6) 개발 비용을 줄이기위한 오픈 소스.

신화를 폭로 : PHP가 실제로 죽은 언어입니까?신화를 폭로 : PHP가 실제로 죽은 언어입니까?Apr 16, 2025 am 12:15 AM

PHP는 죽지 않았습니다. 1) PHP 커뮤니티는 성능 및 보안 문제를 적극적으로 해결하고 PHP7.x는 성능을 향상시킵니다. 2) PHP는 최신 웹 개발에 적합하며 대규모 웹 사이트에서 널리 사용됩니다. 3) PHP는 배우기 쉽고 서버가 잘 수행되지만 유형 시스템은 정적 언어만큼 엄격하지 않습니다. 4) PHP는 컨텐츠 관리 및 전자 상거래 분야에서 여전히 중요하며 생태계는 계속 발전하고 있습니다. 5) Opcache 및 APC를 통해 성능을 최적화하고 OOP 및 설계 패턴을 사용하여 코드 품질을 향상시킵니다.

PHP vs. Python 토론 : 어느 것이 더 낫습니까?PHP vs. Python 토론 : 어느 것이 더 낫습니까?Apr 16, 2025 am 12:03 AM

PHP와 Python에는 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구 사항에 따라 다릅니다. 1) PHP는 웹 개발, 배우기 쉽고 풍부한 커뮤니티 리소스에 적합하지만 구문은 현대적이지 않으며 성능과 보안에주의를 기울여야합니다. 2) Python은 간결한 구문과 배우기 쉬운 데이터 과학 및 기계 학습에 적합하지만 실행 속도 및 메모리 관리에는 병목 현상이 있습니다.

PHP의 목적 : 동적 웹 사이트 구축PHP의 목적 : 동적 웹 사이트 구축Apr 15, 2025 am 12:18 AM

PHP는 동적 웹 사이트를 구축하는 데 사용되며 해당 핵심 기능에는 다음이 포함됩니다. 1. 데이터베이스와 연결하여 동적 컨텐츠를 생성하고 웹 페이지를 실시간으로 생성합니다. 2. 사용자 상호 작용 및 양식 제출을 처리하고 입력을 확인하고 작업에 응답합니다. 3. 개인화 된 경험을 제공하기 위해 세션 및 사용자 인증을 관리합니다. 4. 성능을 최적화하고 모범 사례를 따라 웹 사이트 효율성 및 보안을 개선하십시오.

PHP : 데이터베이스 및 서버 측 로직 처리PHP : 데이터베이스 및 서버 측 로직 처리Apr 15, 2025 am 12:15 AM

PHP는 MySQLI 및 PDO 확장 기능을 사용하여 데이터베이스 작업 및 서버 측 로직 프로세싱에서 상호 작용하고 세션 관리와 같은 기능을 통해 서버 측로 로직을 처리합니다. 1) MySQLI 또는 PDO를 사용하여 데이터베이스에 연결하고 SQL 쿼리를 실행하십시오. 2) 세션 관리 및 기타 기능을 통해 HTTP 요청 및 사용자 상태를 처리합니다. 3) 트랜잭션을 사용하여 데이터베이스 작업의 원자력을 보장하십시오. 4) SQL 주입 방지, 디버깅을 위해 예외 처리 및 폐쇄 연결을 사용하십시오. 5) 인덱싱 및 캐시를 통해 성능을 최적화하고, 읽을 수있는 코드를 작성하고, 오류 처리를 수행하십시오.

PHP에서 SQL 주입을 어떻게 방지합니까? (준비된 진술, pdo)PHP에서 SQL 주입을 어떻게 방지합니까? (준비된 진술, pdo)Apr 15, 2025 am 12:15 AM

PHP에서 전처리 문과 PDO를 사용하면 SQL 주입 공격을 효과적으로 방지 할 수 있습니다. 1) PDO를 사용하여 데이터베이스에 연결하고 오류 모드를 설정하십시오. 2) 준비 방법을 통해 전처리 명세서를 작성하고 자리 표시자를 사용하여 데이터를 전달하고 방법을 실행하십시오. 3) 쿼리 결과를 처리하고 코드의 보안 및 성능을 보장합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.