文件上傳錯誤代碼:
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 "失敗"; } ; ?> |