我有一个大的functions.php
文件,其中包含我在我的应用程序中使用的所有函数。在它的顶部,我包含use Aws\S3\S3Client;
命名空间。下面文件的唯一内容是一大堆函数。
我有一个名为uploadFile
的函数,它最初只是将文件加载到本地磁盘并将记录插入数据库。现在我想将文件上传到AWS S3存储桶,但是当我尝试使用我在此处找到的AWS代码时:http://docs.aws.amazon.com/AmazonS3/latest/dev/UploadObjSingleOpPHP.html
它给了我这个错误:
Fatal error: Class 'Aws\S3\S3Client' not found in C:\wamp\www\project\functions.php
这是我的本地实现:
function uploadFile($file_name, $target_directory, $files = null) {
$bucket = getS3Bucket();
$keyname = getS3Key();
// $filepath should be absolute path to a file on disk
$filepath = $file_name;
// Instantiate the client.
$s3 = S3Client::factory();
// Upload a file.
$result = $s3->putObject(array(
'Bucket' => $bucket,
'Key' => $keyname,
'SourceFile' => $file_name,
'ContentType' => 'text/plain',
'ACL' => 'public-read',
'StorageClass' => 'REDUCED_REDUNDANCY',
'Metadata' => array(
'param1' => 'value 1',
'param2' => 'value 2'
)
));
return $result;
}
似乎我遇到了使用S3 API和我的程序代码的问题。有没有办法处理这个,而不必重写我上传文件的所有地方? (换句话说,我将对uploadFile
函数进行任何更改,但我不想重写该函数的每个实现。)
答案 0 :(得分:1)
听起来问题是您没有在functions.php
中包含任何内容以启用自动加载SDK类。您包含的内容取决于您安装SDK的方式。如果您使用的是Composer,则要使用的自动加载器位于<your-project-root>/vendor/autoload.php
。您可以查看SDK's Getting Started Guide,了解有关其他安装方法的详细信息(例如aws.phar
和aws.zip
)。