php上传文件move,php上传文件限制

本文目录一览:

php 图片上传move_uploaded_file 出错

上传文件不存在。很可能是PHP临时文件夹不存在导致的。

?php

/*

* 文件上传类

*/

class Uploads{

//上传文件

private $uploadFile;

//上传文件扩展名

private $ext = array(‘jpeg’,’jpg’,’gif’,’png’);

//上传文件大小

private $size = 5000000;

//上传文件目录

private $uploadDir = ‘./uploads/’;

//是否自定义名称,默认FALSE

private $newName = ”;

//上传文件是否可读,默认为TRUE

private $isRead = TRUE;

//上传文件是否可写,默认为TRUE

private $isWrite = TRUE;

//上传信息

private $info;

/*

* 文件上传类初始化

*/

public function __construct($newName=”,$ext=”,$size=”,$dir=”,$isRead=TRUE,$isWrite=TRUE){

$this-ext = empty($ext)?$this-ext:$ext;

$this-size = empty($size)?$this-size:$size;

$this-dir = empty($dir)?$this-uploadDir:$dir;

$this-newName = $newName;

$this-isRead = $isRead?TRUE:FALSE;

$this-isWrite = $isWrite?TRUE:FALSE;

}

/*

* 处理上传文件

*/

public function doUpload(){

$this-checkData();

$this-checkFile() or $this-error();

$this-checkExt() or $this-error();

$this-checkSize() or $this-error();

$this-checkError() or $this-error();

$this-checkDir() or $this-error();

$this-upload() or $this-error();

return $this-info[‘msg’];

}

/*

* 处理上传文件数据

*/

public function checkData(){

$num = 0;

$newArr = array();

foreach($_FILES as $v){

if(is_array($v[‘name’])){

$count = count($v[‘name’]);

for($i=0; $i$count; $i++){

foreach($v as $m=$n){

$newArr[$num][$m] = $n[$i];

}

$num++;

}

}else{

$newArr[$num] = $v;

$num++;

}

}

$endArr = array();

foreach($newArr as $v){

if($v[‘name’] != ”){

$endArr[]=$v;

}

}

$this-uploadFile = $endArr;

}

/*

* 检测上传文件是否存在

*/

private function checkFile(){

if(empty($this-uploadFile)){

$this-info[‘error’] = ‘上传文件不得为空!!!’;

return FALSE;

}

return TRUE;

}

/*

* 检测上传文件类型是否合法

*/

private function checkExt(){

if(!is_array($this-ext)){

$this-ext = explode(‘,’, $this-ext);

}

foreach($this-uploadFile as $v){

$ext = strtolower(substr(strrchr(basename($v[‘name’]),’.’),1));

if(!in_array($ext,$this-ext)){

$this-info[‘error’] = ‘上传文件类型非法,禁止上传!!!’;

return FALSE;

}

}

return TRUE;

}

/*

* 检测上传文件大小

*/

private function checkSize(){

foreach($this-uploadFile as $v){

if($v[‘size’]$this-size){

$this-info[‘error’] = ‘上传文件体积过大,上传失败!!!’;

return FALSE;

}

}

return TRUE;

}

/*

* 检测文件上传错误代码

*/

private function checkError(){

foreach($this-uploadFile as $v){

switch($v[‘error’]){

case 0:

return TRUE;

break;

case 1:

$this-info[‘error’] = ‘上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值,上传失败!!!’;

return FALSE;

break;

case 2:

$this-info[‘error’] = ‘上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值,上传失败!!!’;

return FALSE;

break;

case 3:

$this-info[‘error’] = ‘文件只有部分被上传!!!’;

return FALSE;

break;

case 4:

$this-info[‘error’] = ‘没有文件上传!!!’;

return FALSE;

break;

}

}

return TRUE;

}

/*

* 检测上传文件夹是否存在

*/

private function checkDir(){

if(!file_exists($this-uploadDir)){

mkdir($this-uploadDir,0777,true);

}

if(!is_writeable($this-uploadDir)){

$this-info[‘error’] = ‘上传目录没有写入权限,上传失败!!!’;

return FALSE;

}

return TRUE;

}

/*

* 上传文件

*/

private function upload(){

date_default_timezone_set(‘PRC’);

//检测文件是否自定义名称

$name = empty($this-newName)?date(‘Ymd_His’):$this-newName;

foreach($this-uploadFile as $k=$v){

$upload_path = $this-uploadDir.$name.’_’.($k+1).strrchr(basename($v[‘name’]),’.’);

$upload_path = iconv(‘UTF-8′,’gbk’,$upload_path);

if(is_uploaded_file($v[‘tmp_name’])){

if(move_uploaded_file($v[‘tmp_name’], $upload_path)){

if($this-isRead $this-isWrite){

chmod($upload_path,0777);

}else if($this-isRead !$this-isWrite){

chmod($upload_path,0444);

}else if(!$this-isRead $this-isWrite){

chmod($upload_path,0222);

}else{

chmod($upload_path,0000);

}

$this-info[‘msg’]=array(‘type’=1,’success’=’文件上传成功’,’path’=iconv(‘gbk’,’UTF-8′,$upload_path));

}else{

$this-info[‘error’] = ‘文件上传失败!!!’;

return FALSE;

}

}

}

return TRUE;

}

/*

* 上传成功的方法

*/

public function success(){

echo $this-info[‘msg’][‘success’];

}

/*

* 上传文件错误方法

*/

public function error(){

echo $this-info[‘error’];

die;

}

这是我写的PHP类,你可以参考一下。有什么特殊需要的,你可以告诉我一下,完善一下上传类。

php上传文件为什么要使用move

上传文件默认存储在临时目录,临时目录的文件是不能长久保存的,因此必须移动到确定的目录以长久保存上传的文件。

PHP上传文件move_uploaded_file()函数路径问题

两张路径肯定是不同的

第一个路径,无论php文件在什么地方,都是指向那个路径目录

而第二个就不一定了,得看php文件在哪里!

第二种,如果指向的目录不存在,那当然上传就不会成功!

原创文章,作者:ERAF,如若转载,请注明出处:https://www.506064.com/n/133701.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ERAFERAF
上一篇 2024-10-04 00:00
下一篇 2024-10-04 00:00

相关推荐

  • PHP和Python哪个好找工作?

    PHP和Python都是非常流行的编程语言,它们被广泛应用于不同领域的开发中。但是,在考虑择业方向的时候,很多人都会有一个问题:PHP和Python哪个好找工作?这篇文章将从多个方…

    编程 2025-04-29
  • PHP怎么接币

    想要在自己的网站或应用中接受比特币等加密货币的支付,就需要对该加密货币拥有一定的了解,并使用对应的API进行开发。本文将从多个方面详细阐述如何使用PHP接受加密货币的支付。 一、环…

    编程 2025-04-29
  • 使用PHP foreach遍历有相同属性的值

    本篇文章将介绍如何使用PHP foreach遍历具有相同属性的值,并给出相应的代码示例。 一、基础概念 在讲解如何使用PHP foreach遍历有相同属性的值之前,我们需要先了解几…

    编程 2025-04-28
  • PHP获取301跳转后的地址

    本文将为大家介绍如何使用PHP获取301跳转后的地址。301重定向是什么呢?当我们访问一个网页A,但是它已经被迁移到了另一个地址B,此时若服务器端做了301重定向,那么你的浏览器在…

    编程 2025-04-27
  • PHP登录页面代码实现

    本文将从多个方面详细阐述如何使用PHP编写一个简单的登录页面。 1. PHP登录页面基本架构 在PHP登录页面中,需要包含HTML表单,用户在表单中输入账号密码等信息,提交表单后服…

    编程 2025-04-27
  • PHP与Python的比较

    本文将会对PHP与Python进行比较和对比分析,包括语法特性、优缺点等方面。帮助读者更好地理解和使用这两种语言。 一、语法特性 PHP语法特性: <?php // 简单的P…

    编程 2025-04-27
  • PHP版本管理工具phpenv详解

    在PHP项目开发过程中,我们可能需要用到不同版本的PHP环境来试验不同的功能或避免不同版本的兼容性问题。或者我们需要在同一台服务器上同时运行多个不同版本的PHP语言。但是每次手动安…

    编程 2025-04-24
  • PHP数组去重详解

    一、array_unique函数 array_unique是php中常用的数组去重函数,它基于值来判断元素是否重复,具体使用方法如下: $array = array(‘a’, ‘b…

    编程 2025-04-24
  • PHP导出Excel文件

    一、PHP导出Excel文件列宽调整 当我们使用PHP导出Excel文件时,有时需要调整单元格的列宽。可以使用PHPExcel类库中的setWidth方法来设置单元格的列宽。下面是…

    编程 2025-04-24
  • php扩展库初探

    一、什么是php扩展库? PHP扩展库(PHP extension)是一些用C语言编写的动态链接库,用于扩展PHP的功能。PHP扩展库使得PHP可以与各种数据库系统相连、SMTP、…

    编程 2025-04-23

发表回复

登录后才能评论