Tệp tải xuống aws sdk php s3

Gần đây tôi đang làm việc với một dự án mà AWS đã tham gia. Tôi cần tải lên một tệp và tải xuống từ nhóm s3. Bây giờ đây là nhiệm vụ chính để đọc tệp từ nhóm riêng tư S3

ví dụ. ,Tôi đã tải lên một tệp trong vùng lưu trữ S3 riêng tư và bây giờ tôi muốn hiển thị tệp đó trong chế độ xem hình ảnh trong PHP. Có Mã có sẵn trên tài liệu AWS nhưng tôi không thể tìm ra cách triển khai mã đó. sau một số cuộc đấu tranh, tôi đã có thể làm điều tìm nạp

Trong blog này, tôi sẽ chỉ cho bạn cách tải xuống tệp từ bộ chứa S3 riêng tư và cả cách đọc tệp từ bộ chứa S3 riêng tư trong PHP

TẢI XUỐNG TẬP TIN TỪ S3 PRIVATE BUCKET. -

Đoạn mã sau dùng để tải xuống tệp từ bộ chứa S3 có vai trò IAM. Chỉ cần đặt thông tin đăng nhập vào chỗ trống và bạn chỉ cần đi. Tệp sẽ được tải xuống

TẢI TẬP TIN TỪ S3 PRIVATE BACKET VÀ XEM NÓ TRÊN TRÌNH DUYỆT. -

Đoạn mã sau dùng để tìm nạp tệp từ bộ chứa S3 có vai trò IAM. Hướng dẫn tương tự như trên, nhập thông tin đăng nhập của bạn và bạn đã sẵn sàng để đi

Ở đây trong mã này, trong khi tìm nạp tệp từ bộ chứa S3 có vai trò IAM là không thể trực tiếp. Vì vậy, để có được URL của hình ảnh có quyền truy cập được xem có thể được tạo từ mã này. AWS có một chức năng tích hợp được gọi là createPresignedRequest(). Bây giờ tất cả chức năng này làm là tạo một URL của tệp được yêu cầu nằm trong nhóm S3 riêng tư

Bây giờ nó nhận hai tham số tương ứng,

  1. Thông tin đối tượng máy khách S3 ($command as per code),
  2. Và tham số thứ hai là giới hạn thời gian được cung cấp cho URL (+6 ngày theo mã ở trên)

Giới hạn thời gian có thể là bạn có thể định cấu hình phương tiện. có thể là 10 phút, 1 giờ, 1 ngày, +6 ngày. Bạn có thể đưa ra giới hạn thời gian hơn +6 ngày theo điều khoản của AWS. vì vậy hãy đảm bảo rằng bạn cung cấp thời gian chính xác và nếu vượt quá giới hạn, nó sẽ báo lỗi vượt quá thời gian cho URL được chỉ định

Trình bao bọc luồng Amazon S3 cho phép bạn lưu trữ và truy xuất dữ liệu từ Amazon S3 bằng cách sử dụng các hàm PHP tích hợp, chẳng hạn như

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
7,
// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
8,
// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
9,
// Open a stream in read-only mode
if ($stream = fopen('s3://bucket/key', 'r')) {
    // While the stream is still open
    while (!feof($stream)) {
        // Read 1,024 bytes from the stream
        echo fread($stream, 1024);
    }
    // Be sure to close the stream resource when you're done with it
    fclose($stream);
}
0,
// Open a stream in read-only mode
if ($stream = fopen('s3://bucket/key', 'r')) {
    // While the stream is still open
    while (!feof($stream)) {
        // Read 1,024 bytes from the stream
        echo fread($stream, 1024);
    }
    // Be sure to close the stream resource when you're done with it
    fclose($stream);
}
1,
// Open a stream in read-only mode
if ($stream = fopen('s3://bucket/key', 'r')) {
    // While the stream is still open
    while (!feof($stream)) {
        // Read 1,024 bytes from the stream
        echo fread($stream, 1024);
    }
    // Be sure to close the stream resource when you're done with it
    fclose($stream);
}
2 và
// Open a stream in read-only mode
if ($stream = fopen('s3://bucket/key', 'r')) {
    // While the stream is still open
    while (!feof($stream)) {
        // Read 1,024 bytes from the stream
        echo fread($stream, 1024);
    }
    // Be sure to close the stream resource when you're done with it
    fclose($stream);
}
3

Bạn cần đăng ký trình bao bọc luồng Amazon S3 để sử dụng nó

$client = new Aws\S3\S3Client([/** options **/]);

// Register the stream wrapper from an S3Client object
$client->registerStreamWrapper();

Điều này cho phép bạn truy cập các bộ chứa và đối tượng được lưu trữ trong Amazon S3 bằng giao thức

// Open a stream in read-only mode
if ($stream = fopen('s3://bucket/key', 'r')) {
    // While the stream is still open
    while (!feof($stream)) {
        // Read 1,024 bytes from the stream
        echo fread($stream, 1024);
    }
    // Be sure to close the stream resource when you're done with it
    fclose($stream);
}
4. Trình bao bọc luồng Amazon S3 chấp nhận các chuỗi chứa tên bộ chứa, theo sau là dấu gạch chéo lên và một tiền tố hoặc khóa đối tượng tùy chọn.
// Open a stream in read-only mode
if ($stream = fopen('s3://bucket/key', 'r')) {
    // While the stream is still open
    while (!feof($stream)) {
        // Read 1,024 bytes from the stream
        echo fread($stream, 1024);
    }
    // Be sure to close the stream resource when you're done with it
    fclose($stream);
}
5

Trình bao bọc luồng được thiết kế để làm việc với các đối tượng và bộ chứa mà ít nhất bạn có quyền đọc. Điều này có nghĩa là người dùng của bạn phải có quyền thực thi

// Open a stream in read-only mode
if ($stream = fopen('s3://bucket/key', 'r')) {
    // While the stream is still open
    while (!feof($stream)) {
        // Read 1,024 bytes from the stream
        echo fread($stream, 1024);
    }
    // Be sure to close the stream resource when you're done with it
    fclose($stream);
}
6 trên bất kỳ bộ chứa nào và
// Open a stream in read-only mode
if ($stream = fopen('s3://bucket/key', 'r')) {
    // While the stream is still open
    while (!feof($stream)) {
        // Read 1,024 bytes from the stream
        echo fread($stream, 1024);
    }
    // Be sure to close the stream resource when you're done with it
    fclose($stream);
}
7 trên bất kỳ đối tượng nào mà người dùng cần tương tác. Đối với các trường hợp sử dụng mà bạn không có cấp quyền này, chúng tôi khuyên bạn nên sử dụng trực tiếp các hoạt động của máy khách Amazon S3

Đang tải xuống dữ liệu

Bạn có thể lấy nội dung của một đối tượng bằng cách sử dụng

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
7. Tuy nhiên, hãy cẩn thận với chức năng này;

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');

Sử dụng

// Open a stream in read-only mode
if ($stream = fopen('s3://bucket/key', 'r')) {
    // While the stream is still open
    while (!feof($stream)) {
        // Read 1,024 bytes from the stream
        echo fread($stream, 1024);
    }
    // Be sure to close the stream resource when you're done with it
    fclose($stream);
}
9 khi làm việc với các tệp lớn hơn hoặc nếu bạn cần truyền dữ liệu từ Amazon S3

// Open a stream in read-only mode
if ($stream = fopen('s3://bucket/key', 'r')) {
    // While the stream is still open
    while (!feof($stream)) {
        // Read 1,024 bytes from the stream
        echo fread($stream, 1024);
    }
    // Be sure to close the stream resource when you're done with it
    fclose($stream);
}

Lỗi ghi tệp chỉ được trả về khi thực hiện lệnh gọi tới

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
60. Các lỗi này không được trả về khi một
// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
61 chưa được xóa được gọi. Giá trị trả về cho
// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
61 sẽ là
// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
63 nếu nó đóng luồng, bất kể có bất kỳ lỗi nào đối với
// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
60 nội bộ của nó. Các lỗi này cũng không được trả về khi gọi
// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
65 do cách PHP triển khai nó

Mở các luồng có thể tìm kiếm

Luồng được mở ở chế độ “r” chỉ cho phép đọc dữ liệu từ luồng và không thể tìm kiếm theo mặc định. Điều này là để dữ liệu có thể được tải xuống từ Amazon S3 theo cách truyền phát thực sự, trong đó các byte đã đọc trước đó không cần phải được lưu vào bộ nhớ đệm. Nếu bạn cần một luồng có thể tìm kiếm được, bạn có thể chuyển

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
66 vào các tùy chọn ngữ cảnh luồng của một hàm

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
6

Mở các luồng có thể tìm kiếm cho phép bạn tìm kiếm các byte đã được đọc trước đó. Bạn không thể bỏ qua các byte chưa được đọc từ máy chủ từ xa. Để cho phép gọi lại dữ liệu đã đọc trước đó, dữ liệu được lưu vào bộ đệm trong luồng tạm thời PHP bằng trình trang trí luồng. Khi lượng dữ liệu được lưu trong bộ nhớ cache vượt quá 2 MB, dữ liệu trong luồng tạm thời sẽ chuyển từ bộ nhớ sang đĩa. Hãy ghi nhớ điều này khi tải xuống các tệp lớn từ Amazon S3 bằng cách sử dụng cài đặt ngữ cảnh luồng

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
66

Đang tải dữ liệu lên

Bạn có thể tải dữ liệu lên Amazon S3 bằng cách sử dụng

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
68

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
6

Bạn có thể tải lên các tệp lớn hơn bằng cách truyền dữ liệu bằng cách sử dụng

// Open a stream in read-only mode
if ($stream = fopen('s3://bucket/key', 'r')) {
    // While the stream is still open
    while (!feof($stream)) {
        // Read 1,024 bytes from the stream
        echo fread($stream, 1024);
    }
    // Be sure to close the stream resource when you're done with it
    fclose($stream);
}
9 và chế độ truy cập luồng “w”, “x” hoặc “a”. Trình bao bọc luồng Amazon S3 không hỗ trợ các luồng đọc và ghi đồng thời (e. g. “r+”, “w+”, v.v.). Điều này là do giao thức HTTP không cho phép đọc và ghi đồng thời

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
8

Amazon S3 yêu cầu chỉ định tiêu đề Độ dài nội dung trước khi gửi tải trọng của yêu cầu. Do đó, dữ liệu được tải lên trong hoạt động

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
60 được lưu vào bộ đệm nội bộ bằng cách sử dụng luồng tạm thời PHP cho đến khi luồng được xóa hoặc đóng

Lỗi ghi tệp chỉ được trả lại khi thực hiện lệnh gọi tới ____160. Các lỗi này không được trả về khi một

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
61 chưa được xóa được gọi. Giá trị trả về cho
// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
61 sẽ là
// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
63 nếu nó đóng luồng, bất kể có bất kỳ lỗi nào đối với
// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
60 nội bộ của nó. Các lỗi này cũng không được trả về khi gọi
// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
65 do cách PHP triển khai nó

chế độ mở

Hàm fopen() của PHP yêu cầu bạn chỉ định tùy chọn ________ 267. Tùy chọn chế độ chỉ định liệu dữ liệu có thể được đọc hoặc ghi vào luồng hay không và liệu tệp có phải tồn tại khi mở luồng hay không. Trình bao bọc luồng Amazon S3 hỗ trợ các chế độ sau

r

Luồng chỉ đọc trong đó tệp phải tồn tại

w

Luồng chỉ ghi. Nếu tệp đã tồn tại, nó sẽ bị ghi đè

a

Luồng chỉ ghi. Nếu tệp đã tồn tại, tệp sẽ được tải xuống một luồng tạm thời và mọi thao tác ghi vào luồng sẽ được thêm vào bất kỳ dữ liệu nào đã tải lên trước đó

x

Luồng chỉ ghi. Một lỗi được đưa ra nếu tệp không tồn tại

Các chức năng đối tượng khác

Trình bao bọc luồng cho phép nhiều hàm PHP tích hợp khác nhau hoạt động với một hệ thống tùy chỉnh, chẳng hạn như Amazon S3. Dưới đây là một số chức năng mà trình bao bọc luồng Amazon S3 cho phép bạn thực hiện với các đối tượng được lưu trữ trong Amazon S3

bỏ liên kết()

Xóa đối tượng khỏi xô

// Open a stream in read-only mode
if ($stream = fopen('s3://bucket/key', 'r')) {
    // While the stream is still open
    while (!feof($stream)) {
        // Read 1,024 bytes from the stream
        echo fread($stream, 1024);
    }
    // Be sure to close the stream resource when you're done with it
    fclose($stream);
}
7

Bạn có thể chuyển vào bất kỳ tùy chọn nào có sẵn cho hoạt động của

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
68 để sửa đổi cách xóa đối tượng (e. g. chỉ định một phiên bản đối tượng cụ thể)

// Open a stream in read-only mode
if ($stream = fopen('s3://bucket/key', 'r')) {
    // While the stream is still open
    while (!feof($stream)) {
        // Read 1,024 bytes from the stream
        echo fread($stream, 1024);
    }
    // Be sure to close the stream resource when you're done with it
    fclose($stream);
}
9

Kích thước tập tin()

Lấy kích thước của một đối tượng

// Open a stream in read-only mode
if ($stream = fopen('s3://bucket/key', 'r')) {
    // While the stream is still open
    while (!feof($stream)) {
        // Read 1,024 bytes from the stream
        echo fread($stream, 1024);
    }
    // Be sure to close the stream resource when you're done with it
    fclose($stream);
}
0

is_file()

Kiểm tra xem một URL có phải là một tệp không

// Open a stream in read-only mode
if ($stream = fopen('s3://bucket/key', 'r')) {
    // While the stream is still open
    while (!feof($stream)) {
        // Read 1,024 bytes from the stream
        echo fread($stream, 1024);
    }
    // Be sure to close the stream resource when you're done with it
    fclose($stream);
}
1

File tồn tại()

Kiểm tra nếu một đối tượng tồn tại

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
0

loại tệp()

Kiểm tra xem một URL có ánh xạ tới một tệp hoặc bộ chứa (thư mục)

tập tin()

Tải nội dung của một đối tượng trong một mảng các dòng. Bạn có thể chuyển bất kỳ tùy chọn nào có sẵn cho hoạt động của

// Open a stream in read-only mode
if ($stream = fopen('s3://bucket/key', 'r')) {
    // While the stream is still open
    while (!feof($stream)) {
        // Read 1,024 bytes from the stream
        echo fread($stream, 1024);
    }
    // Be sure to close the stream resource when you're done with it
    fclose($stream);
}
7 để sửa đổi cách tệp được tải xuống

phimtime()

Nhận ngày sửa đổi cuối cùng của một đối tượng

đổi tên()

Đổi tên một đối tượng bằng cách sao chép đối tượng sau đó xóa bản gốc. Bạn có thể chuyển các tùy chọn có sẵn cho các hoạt động của

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
80 và
// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
68 sang các tham số ngữ cảnh luồng để sửa đổi cách đối tượng được sao chép và xóa

Mặc dù

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
9 thường hoạt động với trình bao bọc luồng Amazon S3, một số lỗi có thể không được báo cáo chính xác do nội bộ của hàm
// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
9 trong PHP. Thay vào đó, chúng tôi khuyên bạn nên sử dụng phiên bản AwsS3ObjectCopier

Làm việc với xô

Bạn có thể sửa đổi và duyệt qua các bộ chứa Amazon S3 tương tự như cách PHP cho phép sửa đổi và duyệt qua các thư mục trên hệ thống tệp của bạn

Đây là một ví dụ về việc tạo một nhóm

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
1

Bạn có thể chuyển các tùy chọn ngữ cảnh luồng sang phương thức

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
84 để sửa đổi cách nhóm được tạo bằng cách sử dụng các tham số có sẵn cho hoạt động CreateBucket

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
2

Bạn có thể xóa các nhóm bằng hàm

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
85

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
3

Một thùng chỉ có thể bị xóa nếu nó trống

Liệt kê nội dung của một thùng

Bạn có thể sử dụng các hàm opendir(), readdir(), rewinddir() và closedir() PHP với trình bao bọc luồng Amazon S3 để duyệt qua nội dung của bộ chứa. Bạn có thể chuyển các tham số có sẵn cho thao tác ListObjects dưới dạng tùy chọn ngữ cảnh luồng tùy chỉnh cho hàm

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
86 để sửa đổi cách các đối tượng được liệt kê

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
4

Bạn có thể liệt kê đệ quy từng đối tượng và tiền tố trong một nhóm bằng cách sử dụng RecursiveDirectoryIterator của PHP

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
5

Một cách khác để liệt kê đệ quy nội dung của một nhóm phát sinh ít yêu cầu HTTP hơn là sử dụng hàm

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
87

_______06____288

Đối tượng

// Download the body of the "key" object in the "bucket" bucket
$data = file_get_contents('s3://bucket/key');
89 sử dụng để thực thi lệnh

// Open a stream in read-only mode
if ($stream = fopen('s3://bucket/key', 'r')) {
    // While the stream is still open
    while (!feof($stream)) {
        // Read 1,024 bytes from the stream
        echo fread($stream, 1024);
    }
    // Be sure to close the stream resource when you're done with it
    fclose($stream);
}
70

Một phiên bản của

// Open a stream in read-only mode
if ($stream = fopen('s3://bucket/key', 'r')) {
    // While the stream is still open
    while (!feof($stream)) {
        // Read 1,024 bytes from the stream
        echo fread($stream, 1024);
    }
    // Be sure to close the stream resource when you're done with it
    fclose($stream);
}
71 để sử dụng để lưu số liệu thống kê tệp đã thu được trước đó vào bộ đệm. Theo mặc định, trình bao bọc luồng sử dụng bộ đệm LRU trong bộ nhớ

Làm cách nào để tải xuống tệp từ aws S3 bằng PHP?

Làm cách nào để tải xuống tệp có php và sdk Amazon S3? .
require_once('thư viện/AWS/sdk. lớp. .
$s3 = AmazonS3 mới($key, $secret);
$objInfo = $s3->get_object_headers('my_bucket', 'test. jpg');
$obj = $s3->get_object('my_bucket', 'test. .
tiếng vang $obj->cơ thể;

Làm cách nào để tải xuống tệp từ dòng lệnh aws S3?

Bạn có thể sử dụng cp để sao chép các tệp từ bộ chứa s3 vào hệ thống cục bộ của mình. Sử dụng lệnh sau. $ aws s3 cp s3. //xô/thư mục/tệp. txt .

Làm cách nào để sử dụng aws SDK trong PHP?

SDK AWS dành cho PHP .
Tùy chọn cấu hình
Đặt thông tin đăng nhập. Sử dụng thông tin xác thực từ các biến môi trường. Sử dụng tệp thông tin xác thực AWS và Hồ sơ thông tin xác thực. Đảm nhận vai trò IAM. Sử dụng nhà cung cấp thông tin xác thực. Sử dụng thông tin xác thực tạm thời từ AWS STS. .
đối tượng lệnh
lời hứa
Trình xử lý và phần mềm trung gian
Dòng
người đánh số trang
Bồi bàn

Làm cách nào để sử dụng aws S3 trong PHP?

Tạo một tệp PHP với mã sau. Đầu tiên tạo một AWS. Dịch vụ máy khách S3 chỉ định Khu vực và phiên bản AWS. Sau đó, gọi phương thức listBuckets, phương thức này trả về tất cả các bộ chứa Amazon S3 thuộc quyền sở hữu của người gửi yêu cầu dưới dạng một mảng cấu trúc Bộ chứa