我有一个大的functions.php
文件,其中包含我在我的应用程序中使用的所有功能。在它的顶部,我包含了use Aws\S3\S3Client;
命名空间。在该文件的唯一内容下面是一大串函数。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和我的程序代码的问题。有没有办法处理这个问题,而不必重写所有我上传文件的地方? (换句话说,我会做任何需要改变的功能,但我讨厌必须重写该函数的每个实现。)
您是如何安装SDK的?您的functions.php文件是否包含为SDK设置自动加载的内容(例如'require'vendor/autoload.php';')? – 2014-08-27 22:01:41
我在根目录中有一个名为'thirdparty'的目录,其中有'aws' SDK。愚蠢的是,我没有建立任何连接,虽然我没有在其中看到一个'vendor/autoload.php'(尽管我现在正在研究它)。 – Bing 2014-08-27 22:20:58
解决了这个问题!现在弄清楚它为什么不认证我。感谢Jeremy Lindblom!如果你提交作为一个真棒,我会接受它。 – Bing 2014-08-27 23:07:17