0

画像のフォルダーをループして、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..が表示されますが、これは明らかにファイル名として読み取ることができません。ここで何が起こっているのですか、どうすれば回避できますか?

ここに画像の説明を入力してください

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 に答える