问题上传照片到localhost PHP

时间:2014-07-02 15:31:22

标签: php

我正在制作照片上传表单。我从大约6年前从事过代码工作的人那里接替了。事实证明,通过代码阅读是一个艰难的过程。目前我正在试图找出照片上传过程的逻辑。

以下是用户提交要上传的照片时调用的代码。一切顺利,直到达到这条线:

此代码返回FALSE:

if(move_uploaded_file($file['tmp_name'],$uploadPath.'.'.$extension))

它不断返回FALSE,因此照片永远不会上传。但是,Database仍然会输入一个条目。

整个代码:

if($input->get('uploadcvprocess')) {
    $application->setUser($user); //User who uploaded the Photo
    $application->setName(trim($input->get('name')));//Title of the Photo
    $application->setKeywords(trim($input->get('keywords')));//Keywords of the Photo
    $application->setDate(date('Y-m-d'));//Date of the Upload
    $application->setJobAd(new JobAd($input->get('jobad_id')));
    $application->setDraft(0);
    $application->setValidated(1);
    $application->save();

    $allowedExtension = array('jpg','png','gif');
    $uploadPath = PHOTO_UPLOAD_PATH.'photo-'.$application->getId();

    $file = $_FILES['cv'];//Get ref to uploaded file
    var_dump($file);

    if(!empty($file)){//If exists do this....

        $extension = strtolower(substr(strrchr($file['name'], '.'), 1));

        if(in_array($extension,$allowedExtension))//Check it's valid format
        {
            if(move_uploaded_file($file['tmp_name'],$uploadPath.'.'.$extension))//checks file is valid before uploading
            {
                if($oldextension = $application->getCVExtension())
                {
                    $file = PHOTO_UPLOAD_PATH.'photo-'.$application->getId().'.'.$oldextension;
                    if(is_file($file))
                    {
                        @unlink($file);
                        $application->setCVExtension('');
                    }
                }

                //Set the photo here...
                $application->setCVExtension($extension);
                var_dump($application);
                die();
                $application->save();
            }
        }
        else{//Not valid so show error
            $application->remove();
            $_SESSION['latest_photo_query_results'] = '';
            $_SESSION['latest_photo_query'] = '';
            header('Location: dashboard_photos.html?showForm=true&txtMessage=You can only upload images (.gif, .jpg, .png)#form');
            exit;
        }
    }else{ //Else it doesn't so do this....
        $application->remove();
        $_SESSION['latest_photo_query_results'] = '';
        $_SESSION['latest_photo_query'] = '';
        header('Location: dashboard_photos.html?showForm=true&txtMessage=You can only upload images (.gif, .jpg, .png)#form');
        exit;
    }

    // Reset cache
    $_SESSION['latest_photo_query_results'] = '';
    $_SESSION['latest_photo_query'] = '';

    //When the process is done reload the photos page
    header('Location: dashboard_photos.html');
    exit;
}

当我做var_dump($applicaton)时,我得到了这个:(照片对象)

object(Photo)[15]
  private 'table' => string 'photo' (length=5)
  private 'name' => string 'Jack 1' (length=6)
  private 'date' => string '2014-07-02' (length=10)
  private 'keywords' => string '' (length=0)
  private 'cvExtension' => string '' (length=0) <----------Will Hold the path to Photo
  private 'draft' => int 0

当我做var_dump($file)我得到这个:(照片上传)

array (size=5)
  'name' => string 'check-sheet.png' (length=15)
  'type' => string 'image/png' (length=9)
  'tmp_name' => string 'C:\wamp\tmp\php48B9.tmp' (length=23)
  'error' => int 0
  'size' => int 1374

任何人都可以看到为什么move_uploaded_file可能会返回FALSE

3 个答案:

答案 0 :(得分:0)

从PHP手册(PHP: move_uploaded_file - Manual):

  

如果filename不是有效的上传文件,则不会执行任何操作,   和move_uploaded_file()将返回FALSE。

     

如果filename是有效的上传文件,但某些文件无法移动   原因,不会发生任何操作,move_uploaded_file()将返回   假。此外,还会发出警告。

在这种情况下,move_uploaded_file()认为这不是有效的上传文件,并返回FALSE而没有其他输出。

答案 1 :(得分:0)

我在尝试设置网页上传多个pdf文件时遇到了类似的问题。

我检查文件夹权限,然后它就像魅力一样。

希望它有所帮助。

答案 2 :(得分:0)

首先,您需要找出文件尝试移动到的位置,以便在某处执行:

var_dump(PHOTO_UPLOAD_PATH);

然后检查您的本地Web服务器是否具有写入该路径的正确权限。看起来您在Windows上,因此您需要在Windows资源管理器中找到该路径,然后右键单击该文件夹并转到“属性”。应该有一个安全选项卡,您可以在其中更改权限。