2016-05-16 6 views
-1

したがって、私はユーザーを登録するために使用するフォームを持っています。そして、私は画像フィールドを持っている、サイズを変更するクラスを使用して、フォルダに画像を格納し、データベースに名前を保存します。イメージアップロードはフォーム上では動作しません

イメージのサイズが変更されず、フォルダに置かれず、コードには拡張子ではなくイメージ名のみが格納され、拡張子も保存する必要があります。だからここ

は私のコードです:

try { 

    $myValidation = new classes_ValidateForm ('registerUser', $_POST); 
    $validationResult = $myValidation->getStatus(); 
    if (!is_array($validationResult)) { 

    $arqName = $_FILES['arquivo']['name']; 
    $arqTemp = $_FILES['arquivo']['tmp_name']; 
    $pasta = 'img/'; 

//extensao do arquivo enviado 

    $extensaoTemp = explode('.',$arqName); 

    $extensao = strtolower(end($extensaoTemp)); 

//nome do arquivo TimesTamp 

    $nome = time(). '.' . $extensao; 

    $upload = move_uploaded_file($arqTemp, $pasta . $nome); 

    if ($upload === true) 

    { 



      $ficheiro = $pasta.$nome; 

      $resizeObj = new resize($ficheiro); 

      $resizeObj -> resizeImage(1600, 1200, 'auto'); 

      $resizeObj -> saveImage("img/$nome", 100); 

      $resizethumb = new resize($ficheiro); 

      $resizethumb -> resizeImage(200, 125, 'crop'); 

      $resizethumb -> saveImage("img/thumbnails/$nome", 100); 

    } 

    $myUser = new classes_User ($_POST, 'newUser'); 
     $myUserManager = new classes_UserManager($myControlPanel); 

     $userResult = $myUserManager->addUser($myUser, $_POST['password'], $nome); 

     echo $userResult; 
     die(); 

} 
} 

そしてここでは、関数は、ユーザーを追加することです:

public function addUser($myUser, $password, $image) { 

    if (!is_a ($myUser, 'classes_User')) { 

     throw new InvalidArgumentException('Invalid Object'); 
    } 

    // 1 Get Username and email 
    $username = $myUser->getUsername(); 
    $email = $myUser->getEmail(); 

    $query = "SELECT * FROM users WHERE username='$username' OR email='$email'"; 
    $myDb = $this->_controlPanel->getMyDb(); 
    $result = $myDb->performQuery($query); 

    if ($result == "Query Error") { 

     return ("ERROR ADDING USER"); 
    } 

    elseif ($result->num_rows==1) { 

     return (false); 
    } 

    else { 

     $name = $myUser->getName(); 
     $encpassword = md5($password); 
     $idtype = $myUser->getUserType(); 



     $query = "INSERT INTO users (name, username, email, password, id_type, image) VALUES ('$name', '$username', '$email', '$encpassword', '$idtype', '$image')"; 

     $result = $myDb->performQuery($query); 

     if($result != true) { 

      return ("Error Adding User:Query"); 
     } 

     else { 

      echo "<h2> You have been registered. You will be redirected to the login page.</h2>"; 
      header("Refresh:3; url=login.php"); 
     } 
    } 
} 

イムこのリサイズクラスを使用して:

https://gist.github.com/leonelsr/3291939#file-resize-class-php

何を私はここで間違っていますか?データベースには$ nomeが格納されますが、写真の拡張子は格納されていません。また、画像もフォルダに保存されません。

+0

はあなたのフォームに 'のenctype = "multipart/form-data" を'使用してください。 –

答えて

0

はおそらく、あなたはは次のようにファイルの拡張子を取得するためにはSplFileInfoクラスを使用する必要があります。

<?php 

     try { 

      $myValidation  = new classes_ValidateForm ('registerUser', $_POST); 
      $validationResult = $myValidation->getStatus(); 

      if (!is_array($validationResult)) { 
       $arqName  = $_FILES['arquivo']['name']; 
       $arqTemp  = $_FILES['arquivo']['tmp_name']; 
       $pasta   = 'img/'; 

       //extensao do arquivo enviado 
       // TRY GETTING THE EXTENSION IN A SIMPLE FASHION... 
       // SIMPLICITY, SOMETIMES, IS PREFERABLE 
       //$extensaoTemp = explode('.',$arqName); 
       //$extensao  = strtolower(end($extensaoTemp)); 

       // SO WE GET THE FILE EXTENSION USING THE SplFileInfo CLASS LIKE SO: 
       $info   = new SplFileInfo($flName); 
       $extensao  = $info->getExtension(); 


       //nome do arquivo TimesTamp 
       $nome   = time(). '.' . $extensao; 


       // MAYBE CHECK FIRST THAT THE DIRECTORY EXIST BEFORE MOVING IT. 
       // AND IF IT DOESN'T YOU MAY WANT TO CREATE IT LIKE SO:     
       if(!is_dir($pasta)){ 
        mkdir($pasta, 0777, true); 
       } 

       $upload   = move_uploaded_file($arqTemp, $pasta . $nome); 

       if ($upload === true) { 
        $ficheiro  = $pasta.$nome; 
        $resizeObj  = new resize($ficheiro); 
        $resizeObj  ->resizeImage(1600, 1200, 'auto'); 
        $resizeObj  ->saveImage("img/$nome", 100); 
        $resizethumb = new resize($ficheiro); 
        $resizethumb ->resizeImage(200, 125, 'crop'); 
        $resizethumb -> saveImage("img/thumbnails/$nome", 100); 
       } 

       $myUser   = new classes_User ($_POST, 'newUser'); 
       $myUserManager = new classes_UserManager($myControlPanel); 
       $userResult  = $myUserManager->addUser($myUser, $_POST['password'], $nome); 

       echo $userResult; 
       die(); 

      } 
     }catch(Exception $e){ 

     } 
関連する問題