Trình soạn thảo aws/aws-sdk-php

Trong bài viết này, bạn sẽ tìm hiểu cách di chuyển các tệp đã tải lên của mình từ máy cục bộ hoặc máy chủ sang nhóm Amazon S3 bucket. Mã đã có sẵn trên github. Nó miễn phí để bạn có thể sử dụng hoặc chia sẻ với bất ký ai

Bạn sẽ học cách làm thế nào để

  1. Tạo bộ chứa Amazon S3
  2. Tải AWS SDK cho PHP để tải tệp lên
  3. Kiểm tra công việc tải lên với 1 tệp
  4. Thiết lập đường dẫn dự án ảnh cho các tệp được lưu trữ tại Local / Server / Domain Hosted Files

Bước 1 - Tạo thùng Amazon S3

Đầu tiên hãy đăng nhập vào tài khoản Amazon AWS của bạn. Khi bạn đăng nhập, bạn sẽ có thể thấy AWS Management Console hoặc nhấp vào

0 ở trên cùng bên trái của menu như trong hình dưới đây

Trình soạn thảo aws/aws-sdk-php
Trình soạn thảo aws/aws-sdk-php

Từ hình ảnh trên như bạn thấy, bạn có thể tìm kiếm S3 hoặc nếu bạn cuộn xuống một chút, bạn sẽ có thể thấy

1 nhấp vào nó

Theo mặc định, bạn sẽ có thể xem danh sách tất cả các Bucket của mình tại đây. Cho phép tạo nhóm mới bằng cách nhấp vào nút

2 như trong hình dưới đây

Trình soạn thảo aws/aws-sdk-php
Trình soạn thảo aws/aws-sdk-php

Sau khi nhấp vào nút

2, bạn sẽ thấy biểu mẫu sau

Trình soạn thảo aws/aws-sdk-php
Trình soạn thảo aws/aws-sdk-php

Bucket Name - Thêm tên dự án của bạn hay bất cứ điều gì khiến bạn nhớ đến nó

Khu vực - Chọn khu vực gần với nơi cung cấp dịch vụ của bạn

(Vô cùng quan trọng) - Bỏ chọn Chặn tất cả truy cập công khai - (Đảm bảo bỏ chọn phần này nếu bạn muốn tải lên hình ảnh hoặc bất kỳ tệp nào bạn muốn hiển thị công khai. Nếu không, trong tương lai khi bạn muốn lấy các tệp của mình, bạn sẽ gặp lỗi)

Chọn Chấp nhận Điều khoản

Nhấp vào nút Tạo thùng

LƯU Ý. Bảo đảm tải xuống tệp thông tin đăng nhập CSV. Vì chúng ta sẽ sử dụng thông tin này trong Bước 3

tada. AWS S3 Bucket of you are available

Bước 2 - Tải AWS SDK cho PHP để tải tệp lên

Hãy tạo dự án ở nơi tôi muốn sử dụng SDK AWS. Ở đây tôi đang sử dụng PHP thuần túy, nhưng mã vẫn nên được đặt tên trong bất kỳ khung nào như Laravel, Codeigniter, Symfony,

Sau đây là cấu trúc thư mục dự án của tôi. Tôi đã cài đặt gói soạn nhạc. Đừng lo lắng, tôi sẽ chỉ cho bạn cách chạy tương tự như hình ảnh bên dưới

Trình soạn thảo aws/aws-sdk-php
Trình soạn thảo aws/aws-sdk-php

Sử dụng câu lệnh bên dưới để cài đặt ddawtj AWS SDK

composer require aws/aws-sdk-php

Vì vậy, bạn đã hoàn thành thêm một bước nữa

Bước 3 - Kiểm tra việc tải lên với 1 tệp

Khi tôi sử dụng

1, nó sẽ xử lý việc tự động tải các lớp giúp tôi, tôi phải gọi các
2 từ thư mục
3 như sau

LƯU Ý. Hầu hết các giải thích tôi sẽ làm trong mã để bạn có thể hiểu rất dễ dàng

Trong khi chúng ta tạo nhóm S3, hãy chắc chắn rằng bạn đã tải xuống thông tin xác thực. Bạn sẽ cần nó như dưới đây

file($file_location);


/** Let's initialize our AWS Client for the file uploads */
$s3 = new Aws\S3\S3Client([
    /** Region you had selected, if don't know check in S3 listing */
    'region'  => 'us-west-2',
    'version' => 'latest',
    /** Your AWS S3 Credential will be added here */
    'credentials' => [
        'key'    => $access_key_id,
        'secret' => $secret,
    ]
]);


/** Since the SDK throw exception if any error
 * I am adding in try, catch
 */
try {
    $aws_object = $s3->putObject([
        /** You bucket name */
        'Bucket'        => $bucket_name,
        /** This is the upload file name, you can change above */
        'Key'           => $file_name,
        /** Give the complete path from where it needs to upload the file */
        'SourceFile'    => $file_location,
        /** Keep It Public Unless You dont want someone to access it
         * You can skip the following if you want to keep it private
         */
        'ACL'           => 'public-read',
        /** Make sure to add the following line,
         * else it will download once you use the end URL to render
         */
        // 'ContentType'   => 'image/jpeg'
        'ContentType'   => $file_mime
    ]);


    /**
     * Uncomment the following for debugging the whole object
     */


    // echo '
';
    // print_r($aws_object);
    
    /** To get the uploaded path of the image you can do 2 ways */
    
    /** Type 1 - Uploaded AWS S3 Bucket URL */
    echo $aws_object['@metadata']['effectiveUri'];
    
    /** Type 2 - Uploaded AWS S3 Bucket URL */
    echo $aws_object['ObjectURL'];

    /****** SAVE THE ABOVE PATH IN YOUR DATABASE FOR FUTURE REFERENCE ******/

} catch (Aws\Exception\AwsException $e) {
    /** Handle the error if any */
    return 'Error: ' . $e->getAwsErrorMessage();
}

Khi bạn kết xuất biến

4 ở trên để gỡ lỗi, bạn sẽ có thể thấy tương tự như đầu ra sau

Aws\Result Object
(
    [data:Aws\Result:private] => Array
        (
            [Expiration] => 
            [ETag] => "c7161dd38b84e8fea7f778a349882fa7"
            [ServerSideEncryption] => 
            [VersionId] => 
            [SSECustomerAlgorithm] => 
            [SSECustomerKeyMD5] => 
            [SSEKMSKeyId] => 
            [SSEKMSEncryptionContext] => 
            [RequestCharged] => 
            [@metadata] => Array
                (
                    [statusCode] => 200
                    [effectiveUri] => https://chans3.s3.us-west-2.amazonaws.com/profile.jpg
                    [headers] => Array
                        (
                            [x-amz-id-2] => W5aSkTIf24p8d074+pgHQs9JAxTah7JIGBWXG5RpF9IUFoNKC46bcyuzsVNp2jJsjff89Bw4W3Y=
                            [x-amz-request-id] => 75669CA75B12E083
                            [date] => Sun, 24 May 2020 16:33:00 GMT
                            [etag] => "c7161dd38b84e8fea7f778a349882fa7"
                            [content-length] => 0
                            [server] => AmazonS3
                        )

                    [transferStats] => Array
                        (
                            [http] => Array
                                (
                                    [0] => Array
                                        (
                                        )

                                )

                        )

                )

            [ObjectURL] => https://chans3.s3.us-west-2.amazonaws.com/profile.jpg
        )

    [monitoringEvents:Aws\Result:private] => Array
        (
        )

)

Quan sát các đường dẫn sau từ đoạn mã trên tức thời

________số 8

Ở đây tôi đã mã hóa cứng, trong bước tiếp theo tôi sẽ giải thích làm thế nào bạn có thể thiết lập nó một cách linh hoạt

Bước 4 - Thiết lập đường dẫn hình ảnh dự án cho các tập tin được lưu trữ tại Local / Server / Domain Hosted Files

Bạn đã thấy cách mã hóa cứng, bạn có thể có một số tập lệnh hoặc một cái gì đó sẽ lấy tất cả các chi tiết giống nhau từ cơ sở dữ liệu. Chúng ta có thể làm như sau