2012-02-09 2 views
1

Ok так что проблема, как представляется, в функции не создавая изображение, или в сценарии он сам, который не пропускает изображение функциифункция не создает изображения еще изображения он прошел

Вот загрузка сценарий (примечание: это вводится в 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); 

} 

в логике, что код должен сделать, если пользователь, используя мои сМс loged в он или она может изменить заголовок на странице, щелкнув значок, который сделает вызов jQuery для edit.php, передав необходимую строку запроса. Оттуда собственный пользователь может загрузить новое изображение, которое будет переименовано в header.jpg и переписать исходное изображение

. Header.jpg должен быть загружен в каталог uploads/и копия исходного кеша изображения/должна быть отсоединена функции могут создавать копию и помещать ее в каталог uploads /.

Что происходит, так это то, что первый скрипт загружает файл и помещает его в каталог cache /, но функция, похоже, не работает и ничего не делает для каталога uploads /.

Любая идея, что я могу делать неправильно или не делать это вызывает эту неприятную проблему?

+2

У вашего веб-сервера есть разрешения на запись в каталог, в котором вы храните изображение? – thenetimp

+0

@thenetimp да, это очень старая функция и была протестирована на многих серверах, работает постоянно, это небольшая перезапись того, что я использую в пользовательском программном обеспечении. Его просто не работает для этого проекта, не уверен, что это может произойти с AJAX. –

+0

нашел вашу проблему, посмотрите на мой ответ, который вы вызываете при создании изображения после повторения тега изображения, чтобы изображение не было в то время. – thenetimp

ответ

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

даже не может видеть, как функция выводит сообщение –

+0

Выполнение теста: он работает, поскольку я не получаю сообщение об ошибке, но похоже, что изображение не передается через createHeader ($ new_file) –

Смежные вопросы