从Codeigniter上传到S3存储桶

时间:2015-01-14 05:26:42

标签: php codeigniter amazon-web-services amazon-s3

您在codeigniter中有S3存储库,我尝试从文件夹上传文件,但它给了我错误。非常感谢,如果有人能指出我正在做什么。

在代码下面的Module文件夹中。

  $this->load->library('s3');
  $bucket = "xxxxxxxxxx";
  $file = "http://localhost/xxxx/backup/01.txt";
  $this->s3->putObjectFile($file, $bucket, 'test', S3::ACL_PUBLIC_READ);

我收到以下错误。

A PHP Error was encountered

Severity: User Warning
Message: S3::inputFile(): Unable to open input file: http://localhost/xxxx/backup/01.txt
Filename: libraries/S3.php
Line Number: 310

2 个答案:

答案 0 :(得分:2)

检查putObjectFile使用的inputFile方法。这会检查文件或目录是否存在,但您使用的是网址。

public static function inputFile($file, $md5sum = true)
{
    if (!file_exists($file) || !is_file($file) || !is_readable($file))
    {
        trigger_error('S3::inputFile(): Unable to open input file: ' . $file, E_USER_WARNING);
        return false;
    }
    return array('file' => $file, 'size' => filesize($file),
        'md5sum' => $md5sum !== false ? (is_string($md5sum) ? $md5sum :
                        base64_encode(md5_file($file, true))) : '');
}

这是您服务器上的文件吗?只需添加文件的路径:

$this->load->library('s3');
$bucket = "xxxxxxxxxx";
$file = "/filesystem/backup/01.txt";
$this->s3->putObjectFile($file, $bucket, 'test', S3::ACL_PUBLIC_READ);

答案 1 :(得分:0)

我认为你不能使用putObjectFile的远程文件。您必须先下载远程文件。