2009-12-30 79 views
0

我有以下模型(codeigniter)代码上传图像和缩略图。上传PHP的问题:缩略图撷取图像名称

但是图像路径的结果变成了images/comfort_big.jpg和images/comfort_big.jpg.jpg。

缩略图图像显示图像的名称并添加.jpg。

我上传images/confort_thumb.jpg为拇指。

有谁能告诉我有什么问题吗?

if ($_FILES){ 
     $config['upload_path'] = './images/'; 
     $config['allowed_types'] = 'gif|jpg|png'; 
     $config['max_size'] = '200'; 
     $config['remove_spaces'] = true; 
     $config['overwrite'] = false; 
     $config['max_width'] = '0'; 
     $config['max_height'] = '0'; 

     $this->load->library('upload', $config);  
     if (strlen($_FILES['image']['name'])){ 
      if(!$this->upload->do_upload('image')){ 
       $this->upload->display_errors(); 
       exit(); 
      } 
      $image = $this->upload->data(); 
      if ($image['file_name']){ 
       $data['image'] = "images/".$image['file_name']; 
      } 
     } 

     if (strlen($_FILES['thumbnail']['name'])){ 
      if(!$this->upload->do_upload('thumbnail')){ 
       $this->upload->display_errors(); 
       exit(); 
      } 
      $thumb = $this->upload->data(); 
      if ($thumb['file_name']){ 
       $data['thumbnail'] = "images/".$thumb['file_name']; 
      } 
     } 
    } 
+1

请注意:为什么您要让用户同时上传完整尺寸的图片和缩略图,用户是否更喜欢从全尺寸图片自动生成缩略图? – 2009-12-30 11:16:12

回答

1

我有用户指南
在它规定的偏好表中快速浏览一下File Uploading Class

注意:文件名不能包含文件扩展名。

所以我的猜测是,你让用户将文件命名

$config['file_name'] = "User defined"; 

或编程方式删除的扩展。既然你知道并列出了扩展已经你可以做

$types = array(".gif",".jpg",".png"); 
$image['file_name'] = str_replace($types , "", $image['file_name']); 
0

你的问题是,当你创建一个拇指你传递完整的形象。

因此它会添加另一个扩展名。

使用下面的代码从文件名中删除扩展名。

<?php 
    $filename=$image['file_name']; 

    $file_name_with_dot = substr($filename,0, strrpos($filename, '.') + 1); 

    $only_file_name = substr($file_name_with_dot,0,strlen($file_name_with_dot)-1); 
?> 

现在这个$only_file_name变量传递给你的拇指功能..

这将是更好地使用来自主图像自动生成缩略图。

希望这对你有帮助。