PHP圖片上傳奇怪問題,各位幫忙!

來源:互聯網
上載者:User
    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 列印出來看看。

膜拜我神.....

問題解決了謝~~

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.