時間:2014年4月4日14:58:08文件上傳參數細節



文件上傳錯誤代碼:

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 判斷大小

<?php  

/*計算並創建目錄*/

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 "失敗";

}

;

?>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章