2017-08-30 7 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(): /VAR/WWW/HTMLの '2017年8月9日16-57-58.pngからアップロード/スクリーン' 'への/ tmp/phpRGn6S7' を移動できませんライン45上の/practice1/images2.php、リファラ: http://localhost/practice1/image.php

私はPHPでアップロードしたファイルに新しいです。 は本当に感謝します。 ありがとうございます。

+0

それが与えたエラー上の任意の詳細をLinux上で は、次のような完全なパスを配置する必要がありますか? PHP/Apacheのエラーログには何が表示されていますか?ファイルサイズは最大ファイルアップロードサイズのPHP設定を超えていますか?それが書いているフォルダは、Apacheユーザが書き込み可能ですか? – flauntster

+0

あなたが直面している問題は何ですか? – DSK

+0

あなたのHTMLフォームに 'enctype'がセットされていますか? 'enctype =" multipart/form-data "' –

答えて

2

WindowsおよびLinuxの場合、move_uploaded_file()関数は同じを使用しません。

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

それとも別々project_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

同じエラーはありません。 : –

関連する問題