代码之家  ›  专栏  ›  技术社区  ›  Talha Bin Shakir

图片上传PHP

php
  •  0
  • Talha Bin Shakir  · 技术社区  · 17 年前

    这是我的代码;

    <?php
    
     define ("MAX_SIZE","500"); 
    
     function getExtension($str) {
             $i = strrpos($str,".");
             if (!$i) { return ""; }
             $l = strlen($str) - $i;
             $ext = substr($str,$i+1,$l);
             return $ext;
     }
    
     $errors=0;
     if(isset($_POST['Submit'])) 
     {
    
        $image=$_FILES['image']['name'];
        if ($image) 
        {
            $filename = stripslashes($_FILES['image']['name']);
    
            $extension = getExtension($filename);
            $extension = strtolower($extension);
    
     if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) 
            {
            //print error message
                echo '<h1>Unknown extension!</h1>';
                $errors=1;
            }
            else
            {
    
     $size=filesize($_FILES['image']['tmp_name']);
    
    if ($size > MAX_SIZE*1024)
    {
        echo '<h1>You have exceeded the size limit!</h1>';
        $errors=1;
    }
    
    $image_name=time().'.'.$extension;
    $newname="user_img/".$image_name;
    $copied = copy($_FILES['image']['tmp_name'], $newname);
    if (!$copied) 
    {
        echo '<h1>Copy unsuccessful!</h1>';
        $errors=1;
    }}}}
    
     if(isset($_POST['Submit']) && !$errors) 
     {
        echo "<h1>File Uploaded Successfully! Try again!</h1>";
     }
    

    可能的问题和解决方案是什么

    6 回复  |  直到 17 年前
        1
  •  2
  •   Natrium    17 年前

    你确实需要 chmod

    你可以很容易地做到这一点 FileZilla .

        2
  •  0
  •   Ian Kemp    17 年前

    user_img

        3
  •  0
  •   TheHippo    17 年前

        4
  •  0
  •   Alex Sexton    17 年前

    这可能是权限错误,请确保您在编写图像的目录中为php运行的用户拥有足够的权限。另一种可能是您超过了php.ini文件中设置的最大POST大小。

        5
  •  0
  •   Corey Ballou    17 年前

    您也可以考虑使用绝对路径 用户标识 文件夹,这将缓解与文件夹的实际相对路径有关的任何问题:

    $newname="user_img/".$image_name;
    

    切换到:

    $newname="/path/to/www/user_img/".$image_name;
    
        6
  •  0
  •   Steve Claridge    17 年前

    1. 我一直使用move_uploaded_file()而不是copy()
    2. 您的目标文件是“user_img/”。$image_name-该相对目录在您的服务器和本地主机上都有效吗?您可能希望转换为完全限定的路径
    推荐文章