我有以下代码将图像上传到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。我想防止这种情况。即使文件名相同,有没有办法将文件名转换为随机名称,然后上传字符?
帮助PLZ。
答案 0 :(得分:1)
阅读其他答案,虽然time()
方法似乎很好,但它不提供真正独特的ID,其准确度仅为1秒。
但PHP提供了一种实现真正unique IDS的方法,它更准确并提供更好的解决方案。您可以使用它:
$filename=uniqid().$_FILES['media']['tmp_name'];
当然,根据您的喜好更改$_FILES['media']['tmp_name']
。
答案 1 :(得分:0)
您可以将时间添加到文件名中,因此假设您始终拥有.jpg:
$filename=explode(".",$filename);
$filename[0].="_".time();
$filename=implode(".",$filename);
答案 2 :(得分:0)
$filename = time()."-".$_FILES['media']['tmp_name'];
像这样,您的图像将被命名为'1333221458-my_image.jpg'