0

ラックスペースのcdnアカウントに画像をアップロードする次のコードがあります。

                    error_reporting(E_ALL);
                    ini_set('display_errors', 1);

                    // include the API
                    require("cloudfiles.php") ;

                    // cloud info
                    $username = ''; // username
                    $key ='' ; // api key
                    $container = ''; // container name

                    ob_start();


                    $localfile = $_FILES['media']['tmp_name'];
                    $filename = $_FILES['media']['name'];



                    ob_flush();

                    // Connect to Rackspace
                    $auth = new CF_Authentication($username, $key);
                    $auth->authenticate();
                    $conn = new CF_Connection($auth);

                    // Get the container we want to use
                    $container = $conn->create_container($container);

                    // store file information

                    ob_flush();

                    // upload file to Rackspace
                    $object = $container->create_object($filename);
                    $object->load_from_filename($localfile);

                    $uri = $container->make_public();
                    //print "Your URL is: " . $object->public_uri();

                    $imagePageUrl = $object->public_uri();

                    //echo '<mediaurl>' . $imagePageUrl . '</mediaurl>';


                    ob_end_flush();


                    //echo '<mediaurl>' . $imagePageUrl . '</mediaurl>';

                    echo '<mediaurl>http://url.com/'.$filename.'</mediaurl>';

したがって、画像、たとえばimage.jpgをアップロードするたびに、コンテナ内の前のimage.jpgが上書きされます。それを防ぎたい。ファイル名が同じでも、ファイル名をランダムな名前、文字に変換してアップロードする方法はありますか?

plzを助けます。

4

3 に答える 3

1

他の回答を読むと、time()アプローチは良いように見えますが、実際の一意のIDは提供されず、精度はわずか1秒です。

しかし、PHPは、より正確でより優れたソリューションを提供する、真に一意のIDSを持つための方法を提供します。あなたはそれを次のように使うことができます:

$filename=uniqid().$_FILES['media']['tmp_name'];

もちろん$_FILES['media']['tmp_name']、好きなように変更します。

于 2012-03-31T19:28:52.090 に答える
0

ファイル名に時間を追加できるので、常に.jpgがあると仮定します。

$filename=explode(".",$filename);
$filename[0].="_".time();
$filename=implode(".",$filename);
于 2012-03-31T19:05:15.720 に答える
0

わかりました...一部のコードがありません...しかし、新しいファイル名(アップロードされた画像)を指定してみることができます...一意の簡単な例である1つの名前:

 $filename = time()."-".$_FILES['media']['tmp_name'];

このように、画像には「1333221458-my_image.jpg」のような名前が付けられます。

于 2012-03-31T19:20:16.433 に答える