s3client getobjecturl example aws php amazon-s3

getobjecturl - Ver si el objeto existe en S3 usando PHP



install php sdk aws (4)

Obtiene si el objeto Amazon S3 especificado existe o no en el grupo especificado.

AmazonS3 doesObjectExist

$s3 = new AmazonS3(); $bucket = ''my-bucket'' . strtolower($s3->key); $response = $s3->doesObjectExist($bucket, ''test1.txt''); // Success? (Boolean, not a CFResponse object) var_dump($response);

Estoy usando PHP y estoy usando la API S3 para cargar un archivo, pero quería asegurarme de que este nombre de archivo exacto ya no existe en el depósito antes de cargar.

He encontrado algunos ejemplos en línea que usan "file_get_contents" pero ¿no significa esto que primero tendría que descargar el archivo completo? Por lo general, estos archivos tienen aproximadamente 10 mb, por lo que idealmente no querría hacer esto.

¿Hay tal vez una forma de usar "file_get_contents" sin descargar el archivo?

O mejor aún, ¿quizás podría usar una solicitud de API para ver si existe el nombre de archivo?

No me importa si el contenido, o el tamaño del archivo, es el mismo, solo el nombre del archivo.


Si tiene o tiene la capacidad de instalar la extensión HTTP PECL, entonces puede usar http_head para hacer una solicitud de encabezado fácilmente y verificar si la respuesta fue 200 o 404.


Tenga en cuenta que las otras sugerencias se basan en la versión 1 del AWS SDK para PHP. Para la versión 2, querrás estar familiarizado con la última guía que se encuentra aquí:

http://docs.aws.amazon.com/aws-sdk-php/guide/latest/index.html

La sección "Cómo empezar" en el enlace de arriba te ayudará a instalar y configurar el SDK, así que asegúrate de tomarte el tiempo de leer esos documentos si aún no lo has hecho. Cuando haya terminado con la configuración, querrá estar familiarizado con el método de envoltura de flujo que se encuentra aquí:

docs.aws.amazon.com/aws-sdk-php/guide/latest/…

Finalmente, a continuación se muestra un breve ejemplo de la vida real de cómo podría usarlo en el flujo de su código.

require(''vendor/autoload.php''); // your filename $filename = ''my_file_01.jpg''; // this will use AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY from env vars $s3 = Aws/S3/S3Client::factory(); // S3_BUCKET must also be defined in env vars $bucket = getenv(''S3_BUCKET'')?: die(''No "S3_BUCKET" config var in found in env!''); // register stream wrapper method $s3->registerStreamWrapper(); // does file exist $keyExists = file_exists("s3://".$bucket."/".$filename); if ($keyExists) { echo ''File exists!''; }


intenta usar el código de abajo:

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

descargar el SDK de S3 de Amazon para PHP. Hay una clase llamada S3; Crea un objeto de S3. El objeto permitirá llamar al método getObjectInfo (). Pase su nombre de cubeta S3 y el nombre del archivo (a menudo, el nombre del archivo se conoce como clave). El método getObjectInfo () devolverá alguna información si el archivo existe, de lo contrario, el método devolverá FALSE.