php
  • mysql
  • image-uploading
  • 2013-05-08 55 views 2 likes 
    2

    我有一個編輯頁面,允許用戶使用表格 上傳配置文件圖像,但問題是我一直得到的格式是不可接受的,即使圖像類型是接受的格式。php腳本上傳圖片不起作用

    這是代碼

    if(isset($_POST['parse_var']) == "pic") 
        { 
         if(!$_FILES['fileField']['tmp_name']) 
         { 
          $errorMSG = '<font color= "#FF0000">Please browse for an Image Before you press the button.</font>'; 
         } 
         else 
         { 
          $maxfilesize = 51200;//in bytes = 50kb 
          if($_FILES['fileField']['size']>$maxfilesize) 
          { 
           $errorMSG = '<font color="#FF0000">Your image was too large, please try again.</font>'; 
           unlink($_FILES['fileField']['tmp_name']); 
          } 
          elseif(!preg_match("^.(gif|jpg|png)$/i^",$_FILES['fileField']['name'])) 
          { 
           $errorMSG = '<font color="#FF0000">Your Image was not one of the accepted format, please try again</font>'; 
           unlink($_FILES['fileField']['tmp_name']); 
          } 
          else 
          { 
           $newname = "image01.jpg"; 
           $place_file = move_uploaded_file($_FILES['fileField']['tmp_name'],"members/$id/".$newname); 
           $message='<font color="#00FF00>Your Image has been upload successfully</font>'; 
          } 
         }//end else 
    
        }//end if 
    

    回答

    4

    主要問題:

    一)

     elseif(!preg_match("^.(gif|jpg|png)$/i^",$_FILES['fileField']['name'])) 
              ^--- 
    

    你不應該使用正則表達式元字符的模式分隔符。嘗試

    preg_match('/\.(gif|jpg|png)$/i', ...) instead. 
    

    但在更大的圖片視圖中,你不應該匹配文件名。文件名可以僞造。您應該進行服務器端MIME類型確定(例如,通過file_info())。

    B)

    你沒有正確地檢查上傳成功。在$ _FILES數組中存在['tmp_name']意味着什麼都沒有。失敗的上傳可能仍然會產生tmp_name,但最終會導致垃圾。始終使用這樣的事情:

    if ($_FILES['fileField']['error'] !== UPLOAD_ERR_OK) { 
        die("Upload failed with error code " . $_FILES['fileField']['error']); 
    } 
    

    的錯誤代碼定義如下:http://php.net/manual/en/features.file-upload.errors.php

    C)(未成年人)

    你無需斷開鏈接的臨時文件。 PHP在腳本退出時自動執行該操作。

    d)(stylistic HUGE error)

    font tags?在2013年?打來電話,20世紀90年代希望自己的HTML 1.0回來......

    +0

    容易對我,我的新的Web開發,這是我第一次使用上傳功能 – user2360853 2013-05-08 19:28:44

    +0

    我只是有一個問題,如何顯示所選的路徑圖片 ?? – user2360853 2013-05-08 19:38:42

    +0

    您將看到的唯一路徑是映像的臨時路徑,而不是用戶本地計算機上的實際路徑。其安全措施。 – PlantTheIdea 2013-05-08 20:09:43

    相關問題