我正在尝试从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);
答案 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 '';
}