Để lưu trữ dữ liệu của bạn trong Amazon S3, bạn làm việc với các tài nguyên được gọi là bộ chứa và đối tượng. Một cái xô là một thùng chứa cho các đối tượng. Một đối tượng là một tệp và bất kỳ siêu dữ liệu nào mô tả tệp đó
Để lưu trữ một đối tượng trong Amazon S3, bạn tạo một bộ chứa rồi tải đối tượng lên bộ chứa. Khi đối tượng ở trong thùng, bạn có thể mở, tải xuống và sao chép đối tượng đó. Khi bạn không cần đối tượng hoặc vùng chứa nữa, bạn có thể dọn sạch các tài nguyên này
Trong bảng điều khiển Amazon S3, khi bạn chọn Mở hoặc Tải xuống dưới dạng đối tượng, các thao tác này sẽ tạo các URL được chỉ định. Trong khoảng thời gian năm phút, bất kỳ ai có quyền truy cập vào các URL được chỉ định này đều có thể truy cập đối tượng của bạn. Để biết thêm thông tin về các URL được chỉ định, hãy xem Sử dụng URL được chỉ định
Với Amazon S3, bạn chỉ trả tiền cho những gì bạn sử dụng. Để biết thêm thông tin về các tính năng và giá cả của Amazon S3, hãy xem Amazon S3. Nếu là khách hàng mới của Amazon S3, bạn có thể bắt đầu sử dụng Amazon S3 miễn phí. Để biết thêm thông tin, xem Bậc miễn phí của AWS
Tôi đang cố gắng để tập lệnh của tôi hiển thị thử nghiệm. jpg trong thùng Amazon S3 thông qua php. Đây là những gì tôi có cho đến nay
require_once['thư viện/AWS/sdk. lớp. php'];
$s3 = AmazonS3 mới[$key, $secret];
$objInfo = $s3->get_object_headers['my_bucket', 'test. jpg'];
$obj = $s3->get_object['my_bucket', 'test. jpg', mảng['tiêu đề' => mảng['bố trí nội dung' => $objInfo->header['_info']['content_type']]]];
tiếng vang $obj->cơ thể;
Điều này chỉ loại bỏ dữ liệu tệp trên trang. Tôi nghĩ rằng tôi cũng cần gửi tiêu đề xử lý nội dung mà tôi nghĩ đã được thực hiện trong phương thức get_object[], nhưng không phải vậy
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];
}
3Bạ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];
}
5Trì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'];
6Mở 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'];
6Bạ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'];
8Amazon 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 đóngLỗ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];
}
7Bạ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];
}
9Kí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];
}
0is_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];
}
1File 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'];
0loạ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ốngphimtime[]
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óaMặ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 AwsS3ObjectCopierLà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'];
1Bạ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'];
2Bạ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'];
3Mộ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'];
4Bạ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'];
5Mộ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];
}
70Mộ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ớ