2014-10-31 79 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); 

以下线的更新只是在最后

$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_imagepd_thumbnail相同的文件名,只是前缀拇指与thumb_,这将使你的生活更轻松前端。

这样,您只需在thumb_前加上pd_image即可访问任何图像缩略图,而不必在数据库中存储pd_thumbnail

+0

它不以这种方式工作。我在文件夹文件上有一个双点(例如:file..jpg),并且只有一个点进入DB(例如:文件)。 – Ogum 2014-10-31 14:38:18

+0

它已更新并正在工作。请检查 – Saqueib 2014-10-31 14:57:29

+0

作品的图像名称的文件夹,但在数据库我只有一个点名称后 – Ogum 2014-10-31 15:47:41

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 2014-10-31 15:37:43

+0

你的意思是一旦$ handle-> Process()运行,它只会创建一个没有扩展名的文件?例如:如果你上传abc.png它会创建一个只有abc的文件? btw也试试这个,$ handle-> image_convert ='jpg';这只是为了调试问题。 通常,当您使用class.upload.php上载文件时,它会创建具有相同名称和扩展名的文件。你可以通过图片网址吗? – Janaka 2014-10-31 15:59:13

+0

是的,它创建一个文件只与名称..但我可以看到它在前端!对不起,但我正在本地主机上工作 – Ogum 2014-10-31 16:12:57