AWS S3文件上传:S3Client类未找到。

3
我有一个包含我应用程序中所有函数的大型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函数进行任何必要的更改,但我不想重新编写该函数的每个实现。)


你是怎么安装SDK的?你的functions.php文件中是否包含设置SDK自动加载的代码(例如,require 'vendor/autoload.php';)? - undefined
我在根目录下有一个名为 thirdparty 的文件夹,在其中有 aws SDK。愚蠢的是,我没有与之建立任何连接,尽管我在其中没有看到 vendor/autoload.php(不过我现在会马上查看)。 - undefined
问题解决了!现在要弄清楚为什么它不认证我。谢谢Jeremy Lindblom!如果你提交得很棒,我会接受的。 - undefined
1个回答

2
看起来问题在于你的functions.php没有包含任何内容以启用SDK类的自动加载。你要包含的内容取决于你如何安装SDK。如果你使用Composer,应该位于<your-project-root>/vendor/autoload.php中的自动加载器将被使用。你可以查看SDK入门指南了解其他安装方法(例如aws.pharaws.zip)的详细信息。请注意保留HTML标签。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接