我尝试使用方法
复制位于容器上的几个文件CF_container->copy_object_to('th/image_a.jpg',Object(CF_container),'th/image_a_copy.jpg')
但是当我尝试复制存在的文件时,我收到了这条消息
Specified object 'container_name/th/image_a.jpg' did not exist as source to copy from or 'container_name' did not exist as target to copy to.
我做错了什么?这个操作不可能吗?这个操作不允许吗?
感谢您的回答。
答案 0 :(得分:3)
看起来你正在使用php-cloudfiles中的SDK。可以在github here上找到copy_object_to函数。
该库已被弃用,转而使用php-opencloud。可以找到文档here
复制对象时使用的新函数是DataObject :: Copy,可以找到here。
使用php-opencloud库制作Cloud Files对象副本的编程逻辑如下所示:
// we must include this file
require_once "php-opencloud.php";
define('AUTHURL', RACKSPACE_US);
// create new Rackspace connection
$connection = new \OpenCloud\Rackspace(AUTHURL,
array('username' => USERNAME, 'apiKey' => APIKEY));
// connect to ObjectStore
$object_store = $connection->ObjectStore();
// create a container named CONTAINER_NAME
$cont = $ostore->Container();
$cont->Create(array('name'=>CONTAINER_NAME));
// create an object in that container
$obj = $cont->DataObject();
$obj->Create(array('name' => 'test_obj', 'content_type' => 'text/plain'), __FILE__);
// copy it to another object
$target = $cont->DataObject();
$target->name = $obj->Name().'-COPY';
$obj->Copy($target);
如果您无法升级到使用php-opencloud库,则看起来其他用户遇到类似问题here并将其跟踪为双重编码斜杠。