dtn55928 2016-05-16 09:45
浏览 60
已采纳

图片上传无法在表单上运行

So i have a form, that i use to regist users. And then i have a image field, using a resize class, to store the image on a folder, and save the name on the database. I have two problems:

The image is not being resized and place on the folder, and the code only stores the image name, not the extension, and it should store the extension too.

So here is my code:

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();

}
}

And here is the function to add a user:

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");
        }
    }
}

Im using this resize class:

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

What am i doing wrong here? It stores the $nome in the database, but not with the extension of the photo as it is supposed too. And the image is not stored in the folder too.

  • 写回答

1条回答 默认 最新

  • dongpo5207 2016-05-16 09:57
    关注

    Perhaps you should Use the SplFileInfo Class to obtain the files extension like this:

        <?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){
    
            }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥60 pb数据库修改或者求完整pb库存系统,需为pb自带数据库
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路