2014-10-31 3 views
0

Я использую class.upload.php для изображений. Изменение размера корректно работает с именем и расширением в папке, но у меня проблема с сохранением имени в базе данных mysql. Нет расширения файла (.jpg, .gif и т. Д.) ... почему? как я могу решить проблему? Благодаряclass.upload.php и расширение файла отсутствуют

 /* ========== SCRIPT UPLOAD MULTI IMAGES ========== */ 
    include('class.upload.php'); 
     $dir_dest="../../images/gallery/"; 

    $files = array(); 
    foreach ($_FILES['fleImage'] as $k => $l) { 
    foreach ($l as $i => $v) { 
     if (!array_key_exists($i, $files)) 
      $files[$i] = array(); 
     $files[$i][$k] = $v; 
    } 
} 

foreach ($files as $file) { 

    $handle = new Upload($file); 
     if ($handle->uploaded) { 

    $mainame = $handle->file_dst_name; 

    $db_name = str_replace(" ","_",$mainame); 
    $image1 = md5(rand() * time()) . ".$db_name"; 
    $parts = explode(".",$image1); 
    $extension = end($parts); 
    $result_big = str_replace("." . $extension,"",$image1); 

     $handle->file_new_name_body = $result_big; 
     $handle->image_resize  = true; 
     $handle->image_x   = 460; 
     $handle->image_ratio_y = true; 
     // $handle->image_y   = 400; 
     $handle->Process($dir_dest); 

     //Thumbnail 
    $db_name = str_replace(" ","_",$mainame); 
    $image1 = md5(rand() * time()) . ".$db_name"; 
    $parts = explode(".",$image1); 
    $extension = end($parts); 
    $result_small = str_replace("." . $extension,"",$image1);  

     $handle->file_new_name_body = $result_small; 
     $handle->image_resize  = true; 
     $handle->image_x   = 180; 
     $handle->image_ratio_y = true; 
     // $handle->image_y   = 120; 
     $handle->Process($dir_dest); 

     // we check if everything went OK 
     if ($handle->processed) { 
       header("Location: index.php"); //echo 'image resized'; 
       $handle->clean(); 

    $query_img="INSERT into tbl_images (file_name, pd_image, pd_thumbnail) VALUES('$nome','$result_big', '$result_small')";  
     $result2 = dbQuery($query_img); 

    } else { 
     echo 'error : ' . $handle->error; 
    } 
    } 
    } 
// END SCRIPT UPLOAD MULTI IMAGES 

header("Location: index.php"); 
} 

ответ

0

Вы заменили РАСШИРЕНИЯ с пустой строкой здесь, используя str_replace

$result_small = str_replace("." . $extension,"",$image1); 

и здесь

$result_big = str_replace("." . $extension,"",$image1); 

обновление ниже линии просто добавить .$extension в конце

$handle->file_new_name_body = $result_big.$extension; 

и

$handle->file_new_name_body = $result_small.$extension; 

просто изменить запрос, как этот

$query_img="INSERT into tbl_images ( 
       file_name, 
       pd_image, 
       pd_thumbnail 
      ) VALUES (
       '$nome', 
       '{$result_big}.{$extension}', 
       '{$result_small}.{$extension}')"; 

Я предлагаю вам иметь такое же имя файла для pd_image и pd_thumbnail, просто префикс большой палец с thumb_, которые сделают вашу жизнь легче внешний интерфейс.

Таким образом, вы можете получить доступ к любому миниатюре изображения, просто указав его thumb_ на pd_image, и вам не нужно хранить pd_thumbnail в базе данных.

+0

Это не работает таким образом. У меня есть двойная точка в файле папки (пример: file..jpg) и только точка в БД (пример: файл.) – Ogum

+0

Обновлено и работает. пожалуйста, проверьте – Saqueib

+0

Работы для имени изображения в папке, но в БД у меня есть только точка после имени – Ogum

0

Вы удаляете расширение с помощью этого кода $ result_big = str_replace (".". $ Extension, "", $ image1);

Я не знаю, почему вы это делаете. в любом случае вы можете добавить его обратно, добавив следующую строку после $ handle-> file_new_name_body = $ result_big;

$ handle-> file_new_name_ext = $ extension;

+0

$ result_big = $ image1; $ handle-> file_new_name_body = $ result_big; $ handle-> file_new_name_ext = $ extension; это работает, но я не понимаю, почему я не вижу изображение в папке. это без расширения, но на веб-странице я могу видеть изображение. – Ogum

+0

Вы имеете в виду, что после запуска $ handle-> Process() он создаст файл без расширения? например: если вы загружаете abc.png, он создаст файл только с abc? Кстати, попробуйте это тоже, $ handle-> image_convert = 'jpg'; это только для отладки проблемы. Обычно, когда вы загружаете файл с class.upload.php, он создает файл с тем же именем и расширением. можете ли вы пройти через URL-адрес изображения? – Janaka

+0

Да, он создает файл только с именем .. но я могу видеть его на интерфейсе! извините, но я работаю на localhost – Ogum

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