0

ここでコードを使用しています: http://net.tutsplus.com/tutorials/php/how-to-use-amazon-s3-php-to-dynamically-store-and-manage-files-with-ease/

...ログイン時に個人使用のために写真をアップロードするユーザー用のバケットとサブディレクトリを作成します。

写真が s3 サーバーに正常にアップロードされると、次のようにリストの html ファイルに表示されます。

 <ul id="sortable-list">

    <?php
    $i = 0;
    $contents = $s3->getBucket("bucket_name");

    foreach($contents as $file)
    {

    $fname = $file['name'];                 
    $furl = "http://bucket_name.s3.amazonaws.com/".$fname;  

        echo "<li class=\"default\"><img src=\"$furl\" width=\"100\"></li>";

        {
            $i = 0;
        }

    }
    ?>
 </ul>

何らかの理由で、サブフォルダーはバケット内のファイルとして認識され、 as の最初の要素を埋めます$contentshttp://bucket_name.s3.amazonaws.com/subfolder/、もちろんファイル名を参照せずに空です。

私が使用している php は、上記の tutsplus.com チュートリアルの page.php を修正したものです。バケットとサブディレクトリの作成に関連するコードは次のとおりです。

    if(isset($_POST['Submit'])){

        $fileName = $_FILES['theFile']['name'];
        $fileTempName = $_FILES['theFile']['tmp_name'];
        $folderName = "subfolder/$fileName";

        $s3->putBucket("unique_id", S3::ACL_PUBLIC_READ);

        if ($s3->putObjectFile($fileTempName, "unique_id", $folderName, S3::ACL_PUBLIC_READ)) {
            echo "<strong>We successfully uploaded your file.</strong>";
        }else{
            echo "<strong>Something went wrong while uploading your file... sorry.</strong>";
        }
    }

サブフォルダーがファイルとして認識されないようにし、表示内に要素を作成する方法を理解するのに助けが必要です。どうもありがとう

4

3 に答える 3

0

いくつかの解決策:

  1. (最も簡単)スラッシュで終わる場合は、フォルダーです。つまり、substr($ fname、-1)=='/'を確認すると、フォルダがあります

  2. (ニーター) PCREでget_object_list呼び出しを使用して、フォルダー名の後に何かがあるファイルのみを取得できます。フォルダ名がわかっている場合、これはうまく機能します。

  3. (可能性があり、テストされていません)$ file ['size']をチェックします-ゼロの場合、それはフォルダーまたは空のファイルのいずれかです。とにかく空のファイルは必要ないので、これはオプションである可能性があります。

于 2012-11-20T01:47:10.773 に答える