PHP Zend Framework S3 - PutFile没有放

时间:2012-08-01 06:40:19

标签: php zend-framework amazon-s3

我只是试图遍历图像文件夹并将它们放入Amazon S3存储桶中。我只是想不通为什么它不喜欢PUTFILE函数的DATA部分。

如果我尝试:

$res = $s3 -> putFile("test-bucket/".$entry);

它在存储桶中创建一个空白文件(0个字节),所以我知道它连接正常,文件名也正确。我还尝试循环遍历文件夹文件并将文件名回显到屏幕,而不使用Zend S3功能,这证明该页面可以访问root背后的文件。

关于此功能的documentation说:

  

putFile($ path,$ object,$ meta)将文件内容放在$ path中   进入名为$ object的对象。

     

可选的$ meta参数与putObject相同。如果   内容类型被省略,它将基于源文件猜测   名。

这是我尝试过的:

if ($handle = opendir('d:/web-library-photos/temp-previews')) {

    $loopCounter = 0;
    while (false !== ($entry = readdir($handle))) {
        ///
        $loopCounter = $loopCounter + 1;
        if ($loopCounter < 3) { // for test purposes only
            $localPath = "d:/web-library-photos/temp-previews/".$entry;
            $s3 = new Zend_Service_Amazon_S3($aws_access_key_id, $aws_s3_secret);
            $res = $s3 -> putFile($localPath, "test-bucket/".$entry);
            echo "Success for ".$entry.": " . ($res ? 'Yes' : 'No') . "<br>";
        }
        ///
    }

    closedir($handle);
}

这种特殊的“尝试”会产生错误:

Cannot read file d:/web-library-photos/temp-previews/.' in C:\Inetpub\vhosts\.....thispage.php

所以我想我会尝试 file_get_contents() readfile(),但仍然没有运气!

拜托,请把我直接放在这一个上 - 它让我绕过弯道。

更新

是的,我知道什么是错的,但不知道如何解决它。

如果我这样做:

if ($handle = opendir('d:/web-library-photos/temp-previews')) {
    while (false !== ($entry = readdir($handle))) {
    echo $entry."<BR>";
    }
    closedir($handle);
}

我在搜索结果的开头有一个.和一个..,显然无法读取为文件名!!这里发生了什么,我该如何解决它?

enter image description here

1 个答案:

答案 0 :(得分:2)

尝试在while (false !== ($entry = readdir($handle)))

中附加此内容
while (false !== ($entry = readdir($handle))) {  
    if($entry == "." || $entry == "..") continue;
    /* other codes */
}