2017-08-30 80 views
0

我想上傳一個圖像在我的數據庫,但它不會工作。PHP文件上傳圖像不能正常工作

這裏是上傳圖片的代碼。

<?php 
    $con = mysqli_connect("localhost", "root", "", "test"); 
    mysqli_select_db("test", $con); 

    $username = $_POST['username']; 
    $password = $_POST['password']; 
    $dob = $_POST['dob']; 
    $no = $_POST['no']; 

    if(isset($_POST['submit'])) { 

     if(getimagesize($_FILES['image']['tmp_name']) == FALSE) { 
      echo "Please select an image."; 
     } 

     else { 
      $target_dir = "uploads/"; 
      $target_file = $target_dir . basename($_FILES["image"]["name"]); 
      $uploadOk = 1; 
      $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 

      // Check file size 
      if ($_FILES["image"]["size"] > 500000) { 
       echo "Sorry, your file is too large."; 
       $uploadOk = 0; 
      } 

      // Check if file already exists 
      if (file_exists($target_file)) { 
       echo "<p>Sorry, file already exists.</p>"; 
       $uploadOk = 0; 
      } 

      // Check if $uploadOk is set to 0 by an error 
      if ($uploadOk == 0) { 
       echo "<p>Sorry, your file was not uploaded.</p>"; 
      } 

      // if everything is ok, try to upload file 
      else { 

       if (move_uploaded_file($_FILES["image"]["tmp_name"], $target_file)) { 
        $name = basename($_FILES["image"]["name"]); 
        $image = "uploads/".basename($_FILES["image"]["name"]); 
        echo "<p>".$name. " has been uploaded.</p>"; 
        header("location: image.php"); 

        $qry = "INSERT INTO images (id, name, image, username, password, dob, no) VALUES (NULL, '".$name."', '".$image."', '".$username."', '".$password."', '".$dob."', '".$no."')"; 
        $result = mysqli_query($con, $qry); 

        //$sql = "INSERT INTO images (username) VALUES ('$username')"; 
        //$result = mysqli_query($con, $sql); 

       } 

       else { 
        echo "<p>Sorry, there was an error uploading your file.</p>"; 
       } 
      } 
     } 
    } 
?> 

它總是說,抱歉,上傳文件時出現錯誤。

這是服務器日誌中的錯誤。

PHP的警告:move_uploaded_file()以:無法 '的/ tmp/phpRGn6S7' 移動到 '上傳/截圖,從2017年8月9日16-57-58.png' 在 的/ var/www/html等/practice1/images2.php第45行上,引用者: http://localhost/practice1/image.php

我新在PHP文件上傳。 會真的很感激,如果有人可以幫助。 在此先感謝。

+0

任何進一步的細節上給了錯誤? php/apache錯誤日誌中顯示了什麼?文件大小是否超過最大文件上傳大小的php設置?它正在寫入的文件夾是否可由apache用戶寫入? – flauntster

+0

你能描述一下你面臨的問題嗎? – DSK

+0

你有'enctype'設置在你的html表單中嗎? 'enctype =「multipart/form-data」' –

回答

2

在Windows和Linux上,move_uploaded_file()函數與的作用不同。 在Linux上,你需要把完整路徑是這樣的:

$target_dir = "/var/www/html/practice1/uploads/"; 

或者單獨PROJECT_DIR並上傳DIR像這樣:

$project_dir = '/var/www/html/practice1/'; 
$target_dir = $project_dir . 'uploads/'; 
+0

謝謝!不知道因爲我轉移到Linux和只是一個新手使用它。 –

1

我認爲這個問題是在這裏:

$target_dir = "uploads/"; 

你寧願使用這樣的:

$target_dir = PROJECT_DIR . "uploads/"; 

隨着宗旨,以最終了到上傳目錄的絕對路徑。

+0

我試過但它將不起作用 –

+0

但是,您的錯誤信息是否更改? –

+0

沒有相同的錯誤。 :( –