Chuyển upload file từ Local/Server sang Amazon S3 Bucket trong PHP

Tram Ho

Trong bài viết này, bạn sẽ tìm hiểu cách di chuyển các file đã tải lên của mình từ local hoặc server sang nhóm Amazon S3 bucket.

Code đã có sẵn trên github Moving Uploaded Files To Amazon S3 Bucket. Nó là 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 Amazon S3 bucket.
  2. Tải AWS SDK cho PHP để upload file.
  3. Kiểm tra việc upload với 1 file.
  4. Thiết lập đường dẫn hình ảnh dự án cho các file được lưu trữ tại Local / Server / Domain Hosted Files

Bước 1 – Tạo Amazon S3 bucket.

Đầ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 click vào Services ở trên cùng bên trái của menu như trong hình dưới đây.

AWS Management Console | Search -> S3

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 Storage -> S3 click vào nó.

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

S3 Buckets List | Create New S3 Bucket

Sau khi click vào nút Create bucket, bạn sẽ thấy form sau:

New S3 Bucket Creation Form

Bucket Name – Thêm tên dự án của bạn hay bất cứ thứ gì khiến bạn nhớ đến nó.

Region – 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 Block all public access – (Đảm bảo bỏ chọn phần này nếu bạn muốn upload hình ảnh hoặc bất kỳ file 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 file của bạn, bạn sẽ gặp lỗi).

Chọn Accept Terms

Click vào Create bucket button.

LƯU Ý: Đảm bảo tải xuống file credentials CSV. Vì chúng ta sẽ sử dụng thông tin này trong Bước 3

Tada! AWS S3 Bucketcủa bạn đã sẵn sàng.

Bước 2 – Tải AWS SDK cho PHP để upload file.

Hãy tạo dự án ở nơi tôi muốn sử dụng SDK AWS. Ở đây tôi đang sử dụng Plain PHP, nhưng code vẫn nên là tên trong bất kỳ framework 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 composer package. Đừng lo lắng, tôi sẽ chỉ cho bạn cách chạy tương tự như hình ảnh ở dưới:

Project Folder Structure

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

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

Bước 3 – Kiểm tra việc upload với 1 file.

Khi tôi sử dụng Composer nó sẽ xử lý autoloading the classes giúp tôi, tôi phải gọi các autoload.php từ thư mục vendor như sau:

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

Trong khi chúng ta tạo S3 bucket, hãy đảm bảo bạn đã tải về credentials. Bạn sẽ cần nó như dưới đây:

Khi bạn dump biến $aws_object ở trên để debug, bạn sẽ có thể thấy tương tự như output sau:

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

Ở đây tôi đã hardcoded, 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 file được lưu trữ tại Local / Server / Domain Hosted Files

Bạn đã thấy cách hardcoded, bạn có thể có một số scripts 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.

Trong đoạn code trên, $upload_path tôi đã chỉ ra 2 ví dụ bạn có thể chọn ví dụ bạn muốn.

Tài liệu: https://stackcoder.in/posts/move-uploaded-files-from-local-computer-or-server-to-amazon-s3-bucket-in-php

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo