0

助けてくれてありがとう。

外部 URL から画像をダウンロードしてサーバーに書き込むスクリプトを作成しました。mysql データベースを使用してイメージの宛先を呼び出します。このためには、次の順序に従う必要があります。

  1. URL から画像をダウンロードし、自分のフォルダーに書き込みます
  2. 目的地をデータベースに書き込む
  3. mysql_insert_id( $link ); で最後の ID を取得します。
  4. 画像の名前を変更します。(rename() の使い方がわかりません)

ここに私のコードがあります

<?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 );
 ?>

ファイルの名前を変更するにはどうすればよいですか? そして、これは正しいことですか?

4

1 に答える 1

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で名前を変更

タイトルはデータベース内のファイルの名前だと思いますか? その場合、更新クエリを実行して変更する必要があります。

UPDATE your_table SET TITLE='$RENAMED_TITLE'
于 2013-02-07T18:29:22.153 に答える