file_get_contents需要一个字符串

时间:2011-05-03 01:29:20

标签: php amazon-s3

我正在尝试从s3获取文件并将其移至我的本地文件系统,我收到此错误

  

file_get_contents()期望参数1为字符串,给定对象

$upload_directory = "C:\wamp\test";

$s3 = new AmazonS3("key", "pass");



$source = $s3->getObject("bucket","file.mp3");
$destination = "C:\wamp\test\file.mp3";

$data = file_get_contents($source);

$handle = fopen($destination, "w");
fwrite($handle, $data);
fclose($handle);

5 个答案:

答案 0 :(得分:2)

你正在传递一个对象,var_dump($ source)来查看你首先获得的数据类型。它需要是一个字符串

答案 1 :(得分:2)

显然,AmazonS3::getObject()不会返回字符串。从getObject()返回的对象是否提供URL字符串方法或属性?

编辑:我知道这不是您正在使用的内容,但amazon-s3-php-class似乎提供了一个更简单的界面,用于在本地保存S3对象。

答案 2 :(得分:0)

查看返回对象是否具有可以调用的__toString()函数。如果它返回文件的路径,那么您可以在函数file_get_contents中使用它。

答案 3 :(得分:0)

将对象转换为字符串。

$source = (string) $s3->getObject("bucket","file.mp3");

答案 4 :(得分:0)

转换为字符串对于从$ s3-> getObject返回的对象不起作用。如果您需要从$ s3-> getObject返回一个字符串,请改为:

$image = $s3->getObject($bucket, "file.jpg");
if ($image->body) {
    return $image->body;
} else {
    return '';
}