echo "就在這裡";//--------------------------------------------------------- if (is_uploaded_file($this->tmp_name) === false) { $this->alert("上傳失敗。"); }
問題就出在上面那裡,老是提示上傳失敗。
$this->tmp_name列印出來如下:
D:\\ServerPHP\\fileuploadtmp\\php89BD.tmp
die(var_dump($_FILES));列印也有資料
我前台是用JQ上傳的:
回複討論(解決方案)
你只給了兩行代碼,誰知道你之前還做了什嗎?
你只給了兩行代碼,誰知道你之前還做了什嗎?
private function check_upload() { //有上傳檔案時 if (empty($_FILES) === false) { //原檔案名稱 就是檔案名稱 $this->imageData['filename'] = $_FILES['imgFile']['name']; //伺服器上臨時檔案名稱 $this->tmp_name = $_FILES['imgFile']['tmp_name']; //檔案大小 $this->imageData['filesize'] = $_FILES['imgFile']['size']; //檢查檔案名稱 if (!$this->imageData['filename']) { $this->alert("請選擇檔案。"); } //檢查目錄 if (@is_dir($this->save_path) === false) { $this->alert("上傳目錄不存在。"); } //檢查目錄寫入權限 if (@is_writable($this->save_path) === false) { $this->alert("上傳目錄沒有寫入權限。"); } //檢查是否已上傳 if (@is_uploaded_file($this->tmp_name) === false) { $this->alert("上傳失敗。"); } //檢查檔案大小 if ($this->imageData['filesize'] > $this->max_size) { $this->alert("上傳檔案大小超過限制。"); } //檢查目錄名 $this->dir_name = empty($_GET['dir']) ? 'image' : trim($_GET['dir']); if (empty($this->ext_arr[$this->dir_name])) { $this->alert("目錄名不正確。"); } if($this->dir_name == 'image') { $this->imageData['type'] = 'image'; }else{ $this->imageData['type'] = 'file'; } $this->get_ext(); //檢查副檔名 if (in_array($this->file_ext, $this->ext_arr[$this->dir_name]) === false) { $this->alert("上傳副檔名是不允許的副檔名。\n只允許" . implode(",", $this->ext_arr[$this->dir_name]) . "格式。"); } } }
var_dump(is_file($this->tmp_name));
看看有什麼,為什麼你路徑有兩個\\
var_dump(is_file($this->tmp_name));
看看有什麼,為什麼你路徑有兩個\\
D:\\ServerPHP\\fileuploadtmp\\php89BD.tmp
是不是這種路徑就不能正常上傳?
var_dump(is_file($this->tmp_name));
看看有什麼,為什麼你路徑有兩個\\
bool(true)
這是代碼檔案有?
我問你 is_upload_file 之前還做了什麼
你卻貼了一個方法定義,怎麼就知道這個方法被執行了呢?執行後又做了什麼呢?
public function upload(){error_reporting(E_ALL);ini_set('display_errors', 1);$filename=$_FILES['imgFile']['name'];$type=$_FILES['imgFile']['type'];$tmp_name=$_FILES['imgFile']['tmp_name'];$size=$_FILES['imgFile']['size'];$error=$_FILES['imgFile']['error'];$kk= move_uploaded_file($tmp_name, PATH_DATA . "/upload/".$filename);var_dump($kk);//這裡返回false}
上傳路徑是調試過確認沒有問題,臨時檔案列印也有。就move_uploaded_file處返回false
bool move_uploaded_file ( string filename, string destination )
本函數檢查並確保由 filename 指定的檔案是合法的上傳檔案(即通過 PHP 的 HTTP POST 上傳機制所上傳的)。如果檔案合法,則將其移動為由 destination 指定的檔案。
如果 filename 不是合法的上傳檔案,不會出現任何操作,move_uploaded_file() 將返回 FALSE。
如果 filename 是合法的上傳檔案,但出於某些原因無法移動,不會出現任何操作,move_uploaded_file() 將返回 FALSE。此外還會發出一條警告。
$kk= move_uploaded_file($tmp_name, PATH_DATA . "/upload/".$filename);
把$tmp_name, PATH_DATA . "/upload/".$filename 列印出來看看。
膜拜我神.....
問題解決了謝~~