我只是试图遍历图像文件夹并将它们放入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);
}
我在搜索结果的开头有一个.
和一个..
,显然无法读取为文件名!!这里发生了什么,我该如何解决它?
答案 0 :(得分:2)
尝试在while (false !== ($entry = readdir($handle)))
while (false !== ($entry = readdir($handle))) {
if($entry == "." || $entry == "..") continue;
/* other codes */
}