2012-02-09 74 views
1

确定这样的问题似乎是在功能上没有创建图像,或在脚本它自其没有图像不传递给函数功能不会产生图像仍然像它通过

这里上传脚本(注:这是注入AJAX)

$path = "cache/"; 

    $valid_formats = array("jpg", "png", "gif", "jpeg"); 
    if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") 
     { 
     $name = $_FILES['photoimg']['name']; 
     $size = $_FILES['photoimg']['size']; 

     if(strlen($name)) 
       { 
       ist($txt, $ext) = explode(".", $name); 
       if(in_array($ext,$valid_formats)) 
       { 
       if($size<(2024*2024)) 
        { 
        $new_file = "header.".$ext; 
        $tmp = $_FILES['photoimg']['tmp_name']; 
        if(move_uploaded_file($tmp, $path.$new_file)) 
        { 

      echo "<img src='cache/".$new_file."?".time()."' class='preview'>"; 

       createHeader($new_file);         
        } 

        else 
        echo "failed"; 
        } 

        else 
        echo "Image file size max 1 MB";      
        } 
        else 
       echo "Invalid file format.."; 
       } 

      else 
       echo "Please select image..!"; 

      exit; 
     } 

现在这里是功能

function createHeader($new_file) { 

$path = "uploads/"; 
$image = "cache/"; 
$width = 800; 

    if(preg_match('/[.](jpg)|(jpeg)$/', $new_file)) { 

     $im = imagecreatefromjpeg($image . $new_file); 

    } else if (preg_match('/[.](gif)$/', $new_file)) { 

     $im = imagecreatefromgif($image . $new_file); 
     imagecolortransparent($im, black);  

    } else if (preg_match('/[.](png)$/', $new_file)) { 

     $im = imagecreatefrompng($image . $new_file); 
    } 

    imagealphablending($im, false); 
    imagesavealpha($im, true); 

    $ox = imagesx($im); 
    $oy = imagesy($im); 

    $nx = $width; 
    $ny = floor($oy * ($width/$ox)); 

    imagecopyresampled($nm, $im, 0,0,0,0,$nx,$ny,$ox,$oy);  
    imagealphablending($im, true); 
    if(!file_exists($path)) { 
     if(!mkdir($path)) { 
      die("There was a problem. Please try again!"); 
     } 
     } 

    imagejpeg($nm, $path . $new_file, 100); 

    imagedestroy($im); 
    imagedestroy($nm); 

} 

在逻辑上什么代码必须是如果用户使用我的CMS做的是loged,在他(她)可以更改标题在页面上点击一个图标,这将使jQuery调用edit.php传递所需的查询字符串。从那里自己的用户可以上传一个新的图像,它将被重命名为header.jpg并覆盖原始图像

header.jpg必须上传到uploads /目录并且原始图像缓存/应该是未链接的副本那些函数可以创建一个副本并将其放入uploads /目录中。

发生了什么事是第一个脚本正在上传文件并将其放入缓存/目录中,但该功能似乎不起作用,并且对上传/目录没有任何作用。

任何想法我可能做错了或不这样做是造成这个恼人的问题?

+2

您的网络服务器是否有权写入您要存储图像的目录? – thenetimp 2012-02-09 20:37:00

+0

@thenetimp是的,这是一个非常非常古老的功能,并且已经在许多服务器上进行过测试,这是我在自定义论坛软件中使用的轻微重写。它只是不工作的这个项目不知道这是否可以做到AJAX – 2012-02-09 20:38:11

+0

发现你的问题,看看我的答案,你呼吁图像创建后,你回声图像标记,因此图像不存在在那个时候。 – thenetimp 2012-02-09 20:55:15

回答

0

$ path =“cache /”;

$valid_formats = array("jpg", "png", "gif", "jpeg"); 
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") 
    { 
    $name = $_FILES['photoimg']['name']; 
    $size = $_FILES['photoimg']['size']; 

    if(strlen($name)) 
      { 
      list($txt, $ext) = explode(".", $name); 
      if(in_array($ext,$valid_formats)) 
      { 
      if($size<(2024*2024)) 
       { 
       $new_file = "header.".$ext; 
       $tmp = $_FILES['photoimg']['tmp_name']; 
       if(move_uploaded_file($tmp, $path.$new_file)) 
       { 

      // This needs to happen before the echo of the image tag 
      createHeader($new_file);         

     echo "<img src='cache/".$new_file."?".time()."' class='preview'>"; 
       } 

       else 
       echo "failed"; 
       } 

       else 
       echo "Image file size max 1 MB";      
       } 
       else 
      echo "Invalid file format.."; 
      } 

     else 
      echo "Please select image..!"; 

     exit; 
    } 
+0

甚至不能看到该函数输出消息 – 2012-02-09 20:43:13

+0

做一个测试它的工作,因为我没有得到一个错误,但它看起来像不是通过createHeader($ new_file)传递的图像, – 2012-02-09 20:49:56

相关问题