0

我有以下代码将图像上传到 rackspace 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。我想阻止这种情况。即使文件名相同,有没有办法将文件名转换为随机名称,字符然后上传?

帮助请。

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

好的...缺少一些代码...但是您可以尝试提供新文件名(上传的图像)...一个独特的简单示例名称:

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

像这样你的图像将被命名为'1333221458-my_image.jpg'

于 2012-03-31T19:20:16.433 回答