【问题标题】:uploading to S3 bucket from Codeigniter从 Codeigniter 上传到 S3 存储桶
【发布时间】:2015-03-12 05:57:24
【问题描述】:

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

在代码下方的模块文件夹中。

  $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

【问题讨论】:

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


    【解决方案1】:

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

    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);
    

    【讨论】:

    • IIuisi..我在 XAMPP 上测试代码,当我将它移到服务器时,我的代码工作了。 S3 库很好,问题出在文件路径上。我将完整路径放在服务器上,但由于某种原因,我在 PC 上尝试的所有路径都失败了。
    【解决方案2】:

    我认为您不能将远程文件用于 putObjectFile。您必须先下载远程文件。

    【讨论】:

      猜你喜欢
      • 2017-04-19
      • 1970-01-01
      • 2020-12-30
      • 2018-02-07
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      • 2022-11-05
      相关资源
      最近更新 更多