最新的php 文件上传模型,支持多文件上传
复制代码 代码如下:
class UploadModel
{
protected $keys;
protected $err = array();
protected $target;
protected $exts;
protected $maxSize;
protected $randName;
protected $files = array();
/**
* 初始化变量
*/
public function __construct()
{
$this->exts = array('jpeg','jpg','gif','png','zip','rar');
$this->maxSize = 1024*1024*2;
$this->target = dirname(__FILE__) . '/upload/';
$this->randName = true;
$this->keys = $this->getKeys();
}
/**
* 获取 file 的名称
*/
protected function getKeys()
{
$keys = array_keys($_FILES);
return $keys;
}
/**
* 设置不同类型的变量
*/
public function __set($name, $value)
{
$property = array('target','exts','maxSize','randName');
if(!in_array($name, $property)) return false;
switch(strval($name))
{
case 'target':
$this->$name = Configure::read('app_path') . $value;
break;
case 'exts':
$this->$name = explode(',', $value);
break;
case 'randName':
if($value === true || $value == 1)
{
$this->$name = true;
}
else {
$this->$name = false;
}
break;
default:
$this->$name = $value;
}
}
/**
* 移动上传的文件到指定的目录
* @param $fileName 移动单个文件名称的时候,对上传的文件重新命名
*/
public function save($fileName)
{
$this->err = array();
$this->files = array();
if(!file_exists($this->target)) {
mkdir($this->target);
chmod($this->target, 0777);
}
foreach($this->keys as $key)
{
if(is_array($_FILES[$key]['name']))
{
$count = count($_FILES[$key]['name']);
for($i=0; $i{
$keys = array_keys($_FILES[$key]);
foreach($keys as $item)
{
$file[$item] = $_FILES[$key][$item][$i];
}
$this->upload($file, $fileName);
}
return (count($this->err) > 0)? false:true;
}
else {
return $this->upload($_FILE[$key], $fileName);
}
}
}
/** 内部处理上传文件的过程 */
protected function upload($file, $fileName)
{
if(!is_uploaded_file($file['tmp_name'])) return false;
if(!$this->checkExt($file)) return false;
if(!$this->checkSize($file)) return false;
if($this->randName)
{
$newFileName = $this->target . date('YmdHis', time()) . rand(0,9) . '.' . $this->getExt($file['name']);
}
elseif(emptyempty($fileName))
{
$newFileName = $this->target . '/' . $file['name'];
}
else {
$newFileName = $this->target . '/' . $fileName;
}
$result = move_uploaded_file($file['tmp_name'], $newFileName);
if(!$result)
{
return false;
}
else {
$this->files[] = str_replace($this->target, $newFileName);
return true;
}
}
/**
* 是否是可上传的文件类型
* @param $file 文件对象
*/
public function checkExt($file)
{
if(!in_array($this->getExt($file['name']), $this->exts))
{
$this->err[] = $file['name'].':ext';
return false;
}
else {
return true;
}
}
/**
* 获取文件后缀名
*/
public function getExt($fileName)
{
$pos = strrpos($fileName, '.')+1;
return substr($fileName, $pos);
}
/**
* 检查文件大小是否合法
*/
public function checkSize($file)
{
if($size > $this->maxSize)
{
$this->err[] = $file['name'].':max';
return false;
}
else {
return true;
}
}
/**
* 取得已经上传的文件名称
*/
public function getFiles()
{
return $this->files;
}
}
使用实例:
复制代码 代码如下:
include 'uploaded.model.php';
$U = new UploadModel();
$U->target = '/tmp/';
$U->exts = 'jpg,gif';
$U->maxSize = 1024*275; //275KB
$U->save();
$files = $U->getFiles();
print_r($files);
include 'uploaded.model.php';
$U = new UploadModel();
$U->target = '/tmp/';
$U->exts = 'jpg,gif';
$U->maxSize = 1024*275; //275KB
$U->save();
$files = $U->getFiles();
print_r($files);
在 MayFish 里的使用实例:
复制代码 代码如下:
public function up()
{
$U = M('SYS', 'upload');
$U->target = '/tmp/';
$U->exts = 'jpg,gif';
$U->maxSize = 1024*275; //275KB
$U->save();
header('Location:/?a=upload');
}
public function up()
{
$U = M('SYS', 'upload');
$U->target = '/tmp/';
$U->exts = 'jpg,gif';
$U->maxSize = 1024*275; //275KB
$U->save();
header('Location:/?a=upload');
}
前台代码:
复制代码 代码如下:

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP는 서버 측에서 널리 사용되는 스크립팅 언어이며 특히 웹 개발에 적합합니다. 1.PHP는 HTML을 포함하고 HTTP 요청 및 응답을 처리 할 수 있으며 다양한 데이터베이스를 지원할 수 있습니다. 2.PHP는 강력한 커뮤니티 지원 및 오픈 소스 리소스를 통해 동적 웹 컨텐츠, 프로세스 양식 데이터, 액세스 데이터베이스 등을 생성하는 데 사용됩니다. 3. PHP는 해석 된 언어이며, 실행 프로세스에는 어휘 분석, 문법 분석, 편집 및 실행이 포함됩니다. 4. PHP는 사용자 등록 시스템과 같은 고급 응용 프로그램을 위해 MySQL과 결합 할 수 있습니다. 5. PHP를 디버깅 할 때 error_reporting () 및 var_dump ()와 같은 함수를 사용할 수 있습니다. 6. 캐싱 메커니즘을 사용하여 PHP 코드를 최적화하고 데이터베이스 쿼리를 최적화하며 내장 기능을 사용하십시오. 7

PHP와 Python은 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1.PHP는 간단한 구문과 높은 실행 효율로 웹 개발에 적합합니다. 2. Python은 간결한 구문 및 풍부한 라이브러리를 갖춘 데이터 과학 및 기계 학습에 적합합니다.

PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

PHP는 전자 상거래, 컨텐츠 관리 시스템 및 API 개발에 널리 사용됩니다. 1) 전자 상거래 : 쇼핑 카트 기능 및 지불 처리에 사용됩니다. 2) 컨텐츠 관리 시스템 : 동적 컨텐츠 생성 및 사용자 관리에 사용됩니다. 3) API 개발 : 편안한 API 개발 및 API 보안에 사용됩니다. 성능 최적화 및 모범 사례를 통해 PHP 애플리케이션의 효율성과 유지 보수 성이 향상됩니다.

PHP는 여전히 역동적이며 현대 프로그래밍 분야에서 여전히 중요한 위치를 차지하고 있습니다. 1) PHP의 단순성과 강력한 커뮤니티 지원으로 인해 웹 개발에 널리 사용됩니다. 2) 유연성과 안정성은 웹 양식, 데이터베이스 작업 및 파일 처리를 처리하는 데 탁월합니다. 3) PHP는 지속적으로 발전하고 최적화하며 초보자 및 숙련 된 개발자에게 적합합니다.

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP는 특히 빠른 개발 및 동적 컨텐츠를 처리하는 데 웹 개발에 적합하지만 데이터 과학 및 엔터프라이즈 수준의 애플리케이션에는 적합하지 않습니다. Python과 비교할 때 PHP는 웹 개발에 더 많은 장점이 있지만 데이터 과학 분야에서는 Python만큼 좋지 않습니다. Java와 비교할 때 PHP는 엔터프라이즈 레벨 애플리케이션에서 더 나빠지지만 웹 개발에서는 더 유연합니다. JavaScript와 비교할 때 PHP는 백엔드 개발에서 더 간결하지만 프론트 엔드 개발에서는 JavaScript만큼 좋지 않습니다.

PHP와 Python은 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구와 개인 선호도에 달려 있습니다. 1.PHP는 대규모 웹 애플리케이션의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 데이터 과학 및 기계 학습 분야를 지배합니다.
