45

私は PHP を使用しており、S3 API を使用してファイルをアップロードしていますが、アップロードする前に、この正確なファイル名がバケットにまだ存在していないことを確認したかったのです。

「file_get_contents」を使用するオンラインの例をいくつか見つけましたが、最初にファイル全体をダウンロードする必要があるということではないですか? 通常、これらのファイルは約 10 MB であるため、理想的には、これを実行したくありません。

ファイルをダウンロードせずに「file_get_contents」を使用する方法はありますか?

それとも、API リクエストを使用してファイル名が存在するかどうかを確認できますか?

ファイル名だけで、コンテンツやファイルサイズが同じかどうかは私にとって重要ではありません。

4

4 に答える 4

71

指定された Amazon S3 オブジェクトが指定されたバケットに存在するかどうかを取得します。

AmazonS3doesObjectExist

$s3 = new AmazonS3();
$bucket = 'my-bucket' . strtolower($s3->key);

$response = $s3->doesObjectExist($bucket, 'test1.txt');

// Success? (Boolean, not a CFResponse object)
var_dump($response);
于 2012-09-10T10:51:42.333 に答える
12

以下のコードを使用してみてください。

$s3 = new S3();

$info = $s3->getObjectInfo($bucket, $filename);
if ($info)
{
    echo 'File exists';
}
else
{
    echo 'File does not exists';
}

amazon から PHP 用の S3 SDK をダウンロードします。S3 というクラスがあります。S3のオブジェクトを作成します。オブジェクトは getObjectInfo() メソッドを呼び出すことができます。S3 バケット名とファイル名を渡します (多くの場合、ファイル名はキーと呼ばれます)。getObjectInfo() メソッドは、ファイルが存在する場合は何らかの情報を返します。存在しない場合、このメソッドは FALSE を返します。

于 2014-12-03T02:33:19.883 に答える
3

PECL 拡張機能HTTPを持っている、またはインストールできる場合は、http_headを使用して head リクエストを簡単に作成し、レスポンスが 200 か 404 かを確認できます。

于 2012-06-01T01:35:22.793 に答える