我只是想遍历一个图像文件夹并将它们放入 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 ..
,这显然不能作为文件名读取!这是怎么回事,我该如何解决?