0

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

如果我尝试:

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

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

有关此功能的文档说:

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

我在结果的开头得到 a.和 a ..,这显然不能作为文件名读取!这是怎么回事,我该如何解决?

在此处输入图像描述

4

1 回答 1

2

尝试将其附加到while (false !== ($entry = readdir($handle)))

while (false !== ($entry = readdir($handle))) {  
    if($entry == "." || $entry == "..") continue;
    /* other codes */
}
于 2012-08-01T07:23:18.993 回答