Hướng dẫn check bucket exists s3 php - kiểm tra thùng tồn tại s3 php

Tôi đang sử dụng PHP và tôi đang sử dụng API S3 để tải lên tệp, nhưng tôi muốn đảm bảo rằng tên tệp chính xác này chưa tồn tại trong thùng trước khi tải lên.

Tôi đã tìm thấy một vài ví dụ trực tuyến sử dụng "file_get_contents" nhưng điều này không có nghĩa là bạn sẽ phải tải xuống toàn bộ tệp trước? Thông thường, các tệp này là khoảng 10 MB, vì vậy lý tưởng, tôi thực sự không muốn làm điều này.

Có lẽ có cách nào để sử dụng "file_get_contents" mà không tải xuống tệp?

Hoặc tốt hơn nữa, có lẽ tôi có thể sử dụng yêu cầu API để xem tên tệp có tồn tại không?

Điều đó không quan trọng đối với tôi cho dù nội dung hay tập tin là giống nhau, chỉ là tên tệp.

Đã hỏi ngày 1 tháng 6 năm 2012 lúc 1:27Jun 1, 2012 at 1:27

Hướng dẫn check bucket exists s3 php - kiểm tra thùng tồn tại s3 php

Nhận liệu đối tượng Amazon S3 được chỉ định có tồn tại trong nhóm được chỉ định hay không.

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);

Đã trả lời ngày 10 tháng 9 năm 2012 lúc 10:51Sep 10, 2012 at 10:51

Waqaswaqaswaqas

4.2673 Huy hiệu vàng33 Huy hiệu bạc42 Huy hiệu Đồng3 gold badges33 silver badges42 bronze badges

6

Cố gắng sử dụng mã bên dưới:

$s3 = new S3();

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

Tải xuống S3 SDK từ Amazon cho PHP. Có một lớp gọi là S3; Tạo một đối tượng của S3. Đối tượng sẽ cho phép gọi phương thức getObjectInfo (). Vượt qua tên xô S3 của bạn và tên tệp (thường là tên tệp được gọi là khóa). Phương thức getObjectInfo () sẽ trả về một số thông tin nếu tệp tồn tại, nếu không phương thức sẽ trả về sai.

Đã trả lời ngày 3 tháng 12 năm 2014 lúc 2:33Dec 3, 2014 at 2:33

Hướng dẫn check bucket exists s3 php - kiểm tra thùng tồn tại s3 php

6

Xin lưu ý rằng các đề xuất khác dựa trên phiên bản 1 của AWS SDK cho PHP. Đối với phiên bản 2, bạn sẽ muốn làm quen với hướng dẫn mới nhất được tìm thấy ở đây:

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

Phần "Bắt đầu" trong liên kết trên sẽ giúp bạn cài đặt và thiết lập SDK, vì vậy hãy chắc chắn dành thời gian đọc qua các tài liệu đó nếu bạn chưa làm như vậy. Khi bạn hoàn thành việc thiết lập, bạn sẽ muốn làm quen với phương thức trình bao bọc luồng được tìm thấy ở đây:

http://docs.aws.amazon.com/aws-sdk-php/guide/latest/feature-s3-stream-wrapper.html

Cuối cùng, dưới đây là một ví dụ ngắn gọn, thực tế về cách bạn có thể sử dụng nó trong luồng mã của bạn.

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!';
}

Đã trả lời ngày 8 tháng 11 năm 2014 lúc 17:44Nov 8, 2014 at 17:44

DaviddavidDavid

4461 Huy hiệu vàng7 Huy hiệu bạc18 Huy hiệu đồng1 gold badge7 silver badges18 bronze badges

1

Nếu bạn có hoặc có khả năng cài đặt HTTP tiện ích mở rộng PECL thì bạn có thể sử dụng http_head để thực hiện yêu cầu đầu dễ dàng và kiểm tra xem phản hồi là 200 hay 404.

Đã trả lời ngày 1 tháng 6 năm 2012 lúc 1:35Jun 1, 2012 at 1:35

Hướng dẫn check bucket exists s3 php - kiểm tra thùng tồn tại s3 php

PaulpaulPaul

137K26 Huy hiệu vàng271 Huy hiệu bạc259 Huy hiệu Đồng26 gold badges271 silver badges259 bronze badges

Phiên bản cập nhật cho bất kỳ ai đang tìm kiếm v3 trở lên ...

$s3Client = new \Aws\S3\S3Client([
    'version' => 'latest',
    'region' => getenv('AWS_REGION'),
    'credentials' => [
        'key' => getenv('AWS_KEY'),
        'secret' => getenv('AWS_SECRET')
    ]
]);
$response = $s3Client->doesObjectExist(getenv('AWS_S3_BUCKET'),'somefolder/somefile.ext');
if ($response) {
    echo "Yay, it exists :)";
} else {
    echo "Boo, nothing there :(";
}

Đã trả lời ngày 1 tháng 9 lúc 15:55Sep 1 at 15:55

Hướng dẫn check bucket exists s3 php - kiểm tra thùng tồn tại s3 php

Làm thế nào để bạn kiểm tra xem xô S3 có tồn tại hay không?

Để kiểm tra xem một cái xô đã tồn tại trước khi cố gắng tạo một cái có cùng tên hay không, hãy gọi phương thức Do DoBucketexist.Nó sẽ trả về đúng nếu xô tồn tại, và sai.call the doesBucketExist method. It will return true if the bucket exists, and false otherwise.

Xô có tồn tại S3 không?

Mỗi đối tượng (tệp) trong Amazon S3 phải cư trú trong một thùng, đại diện cho một bộ sưu tập (container) của các đối tượng.Mỗi thùng được biết đến bằng một khóa (tên), phải là duy nhất., which represents a collection (container) of objects. Each bucket is known by a key (name), which must be unique.

Tôi tìm thấy xô S3 ở đâu?

Đăng nhập vào bảng điều khiển quản lý AWS và mở bảng điều khiển Amazon S3 tại https://console.aws.amazon.com/s3/.Trong danh sách xô, chọn tên của thùng mà bạn muốn xem các thuộc tính cho.

Làm thế nào để tôi tìm ra ai sở hữu một thùng S3?

Để truy xuất cài đặt quyền sở hữu đối tượng S3 cho một thùng S3, hãy sử dụng lệnh Get-Bucket-Supertion-Controls AWS CLI.get-bucket-ownership-controls AWS CLI command.