插入数据库后重命名图片名称

时间:2013-02-07 18:23:04

标签: php mysql

感谢您的帮助。

我写了一个脚本,从外部URL下载图片并写入服务器。我使用mysql数据库来调用图像目的地。为此我必须遵循这个顺序:

  1. 从url下载图片写入我的文件夹
  2. 将destionation写入我的数据库
  3. 使用mysql_insert_id($ link);
  4. 获取最后一个id
  5. 重命名图片。 (我不知道如何处理rename())
  6. 这是我的代码

    <?php
    $source_pic = $arr['thumbnail_url']; \\ comes from a API
            $destination_pic =   '/var/www/vhosts/domain.com/domain.com/Uploads/thumbnails/'.uniqid($tag_ponter).'.jpg';
            $max_width = 460;
            $max_height = 345;
    
            $what = getimagesize($source_pic);
    
            switch(strtolower($what['mime']))
            {
                case 'image/png':
                    $src = imagecreatefrompng($source_pic);
                    break;
                case 'image/jpeg':
                    $src = imagecreatefromjpeg($source_pic);
                    break;
                case 'image/gif':
                    $src = imagecreatefromgif($source_pic);
                    break;
                default: die();
            }
    
            list($width,$height)=getimagesize($source_pic);
    
            $x_ratio = $max_width / $width;
            $y_ratio = $max_height / $height;
    
            if( ($width <= $max_width) && ($height <= $max_height) ){
                $tn_width = $width;
                $tn_height = $height;
            }elseif (($x_ratio * $height) < $max_height){
                $tn_height = ceil($x_ratio * $height);
                $tn_width = $max_width;
            }else{
                $tn_width = ceil($y_ratio * $width);
                $tn_height = $max_height;
            }
    
            $tmp=imagecreatetruecolor($tn_width,$tn_height);
            imagecopyresampled($tmp,$src,0,0,0,0,$tn_width, $tn_height,$width,$height);
    
            imagejpeg($tmp,$destination_pic,100);
            imagedestroy($src);
            imagedestroy($tmp);
    
            $thumbnail = '/Uploads/thumbnails/'.$tag_pointer.'.jpg';
    
            //Write into Database
        $values[] = "(NULL,'" . $GroupID . "','" . $UserID . "','" . $Title . "', '". $Description ."', '" . $tag_pointer . "','" . $arr['url'] . "', '". $arr['provider_name'] ."', '".$Text."', '". $arr['type'] ."', '" . $thumbnail . "', '" . $arr['html'] . "', NOW(), '0', '" . getRealIP() . "','1', '0','0')";
        $insert = mysql_query("INSERT INTO contents( ContentID, CatID, UserID, Title, Description, Tag, Link, Provider, Text, Type, Thumbnail, Html, WriteTime, Comments, WriterIP, Active, TotalVotes, VoteSum ) 
                                 VALUES  ".implode(',', $values)."");
    
        $ContentID = mysql_insert_id( $link );
     ?>
    

    如何重命名文件?这是正确的做法吗?

1 个答案:

答案 0 :(得分:0)

我不知道您是否要重命名存储在数据库中的内容,或者重命名文件系统上的实际文件,以便我们向您展示如何执行这两项操作:

在文件系统上重命名

您可以使用重命名功能:

rename("/path/OLD_FILE.png", "/path/NEW_RENAME_FILE.png");

以下代码负责保存到文件系统:

imagejpeg($tmp,$destination_pic,100);

注意$ destination_pic?这是存储文件的位置,包括文件名。因此,您需要确保$ destination_pic定义如下:

$destination_pic =   '/some/path/'. $YOUR_RENAMED_FILE .'.jpg';

在DB中重命名

我认为 Title 是数据库中文件的名称?在这种情况下,您需要运行更新查询来更改它。

UPDATE your_table SET TITLE='$RENAMED_TITLE'