文件上传错误代码:

UPLOAD_ERR_OK

其值为 0,没有错误发生,文件上传成功。

UPLOAD_ERR_INI_SIZE

其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。

UPLOAD_ERR_FORM_SIZE

其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE选项指定的值。

UPLOAD_ERR_PARTIAL

其值为 3,文件只有部分被上传。

UPLOAD_ERR_NO_FILE

其值为 4,没有文件被上传。

UPLOAD_ERR_NO_TMP_DIR

其值为 6,找不到临时文件夹。PHP 4.3.10和  PHP 5.0.3 引进。

UPLOAD_ERR_CANT_WRITE

其值为 7,文件写入失败。PHP   5.1.0引进。

注:以上值在 PHP 4.3.0之后变成了 PHP 常量。



在配置文件中:

;;;;;;;;;;;;;;;;

; File Uploads ;

;;;;;;;;;;;;;;;;

;是否允许文件上传

; Whether to allow HTTP file uploads.

file_uploads = On    

;临时文件路径,如果没有指定使用系统指定的路径

; Temporary directory for HTTP uploaded files (will  use system default if not specified).

upload_tmp_dir = "c:/wamp/tmp"

;上传文件,单个文件的最大值

; Maximum allowed size for uploaded files.

upload_max_filesize = 2M

;一个表单最多提交的文件数目

; Maximum number of files that can ben upload  via a single request.

max_file_uploads = 20

;设定POST数据所允许的最大大小单位字节

;post_max_size应该大于upload_max_filesize  一般用flash上传大文件

post_max_size = 8M

;脚本最大执行时间   apache PHP都有设置

max_execution_time = 30


失败Array ( [pic] => Array ( [name] => 原型图软件-MockupsForDesktop.rar [type] => [tmp_name] => [error] => 1[size] => 0 ) )


上传案例:分目录存储

解决:

图片如何分目录存储,如按日期建立目录?

如何重新命名文件,防止同名,随机+获取文件后缀?

如何限制文件上传大小?


思路:接受文件--并分目录存储----生成随机文件名

1 根据时间戳,并按一定规则创建目录

2 获取文件后缀名

3 判断大小

/*计算并创建目录*/

function  mk_dir(){

     $dir = date("md/i",time()); //按月日/分钟创建目录

     if (is_dir('./'.$dir)) {

          return $dir;

     }else{

          mkdir('./'.$dir,0777,true);

          return $dir;

     }

}

/*获取文件名*/

function  getExt($file){

     $tmp = explode('.', $file);

     return end($tmp);

}

/*获取随机文件名*/

function  randName(){

     $str =  'abcdefghijklmnpqrstuvwxyz23456789';

     return substr(str_shuffle($str), 0,6);

}

if  ($_FILES['pic']['error'] != 0) {

     echo "上传失败";

     exit;

}

$pic =  $_FILES['pic'];

//拼接文件路径

$path  = './'.mk_dir().'/'.randName().'.'.getExt($pic['name']);

//移动文件

if  (move_uploaded_file($pic['tmp_name'], $path)) {

     echo "成功";

}else{

     echo "失败";

}

;

?>