画像のフォルダーをループして、AmazonS3バケットに入れようとしているだけです。PUTFILE関数のDATA部分が気に入らない理由がわかりません。
私が試してみると:
$res = $s3 -> putFile("test-bucket/".$entry);
バケット内に空白のファイル(0バイト)が作成されるため、接続は正常であり、ファイル名も正しいことがわかります。また、Zend S3関数を使用せずに、フォルダーファイルをループしてファイル名を画面にエコーしようとしました。これにより、このページがルートの背後にあるファイルにアクセスできることが証明されました。
この関数に関するドキュメントには次のように書かれています。
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..
が表示されますが、これは明らかにファイル名として読み取ることができません。ここで何が起こっているのですか、どうすれば回避できますか?