2014-04-01 43 views
0

我想製作一個腳本,允許用戶更改他們的個人資料圖片,以便製作我的網站。這裏是表單的HTML代碼:返回false的文件上傳腳本

 <form action="upload_prof_pic.php" method="POST" enctype="multipart/form-data"> 
      <input type="file" class="btn btn-default" name="file" id="file" /><br /><br /> 
      <input type="submit" class="btn btn-default" value="Upload Profile Picture" /> 
     </form> 

這裏是upload_prof_pic.php PHP代碼:

<?php 
session_start(); 
require("includes/connect.php"); 

$results = $db->query("SELECT * FROM users WHERE username='".$_SESSION["logged_in"]."'"); 
$rows = $results->fetch(); 

$allowedExts = array("gif", "jpeg", "jpg", "png"); 
$temp = explode(".", $_FILES["file"]["name"]); 
$extension = end($temp); 
if (
    (
     ($_FILES["file"]["type"] == "image/gif") 
    || ($_FILES["file"]["type"] == "image/jpeg") 
    || ($_FILES["file"]["type"] == "image/jpg") 
    || ($_FILES["file"]["type"] == "image/pjpeg") 
    || ($_FILES["file"]["type"] == "image/x-png") 
    || ($_FILES["file"]["type"] == "image/png") 
    ) 
    && ($_FILES["file"]["size"] < 20000) 
    && in_array($extension, $allowedExts) 
) { 
    if ($_FILES["file"]["error"] > 0) { 
     //error: uploading 
     header("Location: account.php?err=upload"); 
    } else { 
     //success 
     move_uploaded_file($_FILES["file"]["tmp_name"], 
      "prof_pic/users/".$rows["username"]."/" . $_FILES["file"]["name"]); 
     $db->query("UPDATE users SET prof_pic='".$_FILES['file']['name']."' WHERE username='".$_SESSION["logged_in"]."'"); 
     header("Location: account.php"); 
    } 
} else { 
    //error: invalid file 
    header("Location: account.php?err=invalid"); 
} 

?> 

它總是運行「//錯誤:無效文件」的腳本的一部分。誰能幫忙?它曾經工作過一次,然後我在'//成功'部分改變了一些東西。這應該沒有任何影響,但顯然它確實。

+2

簡單地說,你的檢查之一失敗。爲什麼不在'if'語句之前運行以下代碼?'var_dump($ _ FILES ['file'] ['type'],$ _FILES ['file'] ['size'],$ extension);退出;' – Phil

+1

或只是'print_r($ _ FILES);'得到全部 –

+0

@Phil謝謝!事實證明,我的尺碼設置得太低了。我把它設置得更高,並且工作。 –

回答

0

我得到了同樣的錯誤,所以我用下面的JavaScript編碼。

<script type="text/javascript" src="js/jquery-func.js"></script> 
<SCRIPT type="text/javascript"> 
    function ValidateFileUpload() { 
     var fuData = document.getElementById('filename'); 
     var FileUploadPath = fuData.value; 

//To check if user upload any file 
     if (FileUploadPath == '') { 
      alert("Please upload an image"); 

     } else { 
      var Extension = FileUploadPath.substring(
        FileUploadPath.lastIndexOf('.') + 1).toLowerCase(); 

//The file uploaded is an image 

if (Extension == "gif" || Extension == "png" || Extension == "bmp" 
        || Extension == "jpeg" || Extension == "jpg") 

      { 


      <?php 
move_uploaded_file($_FILES["file"]["tmp_name"], 
      "prof_pic/users/".$rows["username"]."/" . $_FILES["file"]["name"]); 
     $db->query("UPDATE users SET prof_pic='".$_FILES['file']['name']."' WHERE username='".$_SESSION["logged_in"]."'"); 
     header("Location: account.php"); 
?> 
      } 

//The file upload is NOT an image 
else { 
       alert("Photo only allows file types of GIF, PNG, JPG, JPEG and BMP. "); 

      } 
     } 
    } 

HTML部分

<input onchange="ValidateFileUpload(this);" type="file" name="file" id="filename"/>