Lưu hình ảnh từ URL trong PHP bằng thư viện cURL

Lưu hình ảnh từ URL trong PHP bằng thư viện cURL

Đôi khi, chúng ta cần tải xuống một hình ảnh từ một URL cụ thể và sử dụng nó vào dự án nào đó. Một cách dễ dàng là truy cập URL đó, nhấp chuột phải và lưu hình ảnh. Nhưng nếu bạn muốn làm điều đó tự động trong code? Có nhiều lý do khác nhau giữa người này với người khác, giữa developer này với developer khác. Nếu tập hợp hàng trăm URL hình ảnh được đưa ra và bằng cách nào đó chúng ta muốn lưu chúng vào máy hoặc cần sử dụng tập hợp này cho dự án nào đó… Chắc chắn là Dai Pho không thể tải xuống từng tệp bằng cách thủ công.

Có hai cách xử lý khác nhau để tải xuống hình ảnh từ URL được liệt kê bên dưới:

  • Sử dụng cách “xử lý tệp cơ bản”.
  • Sử dụng thư viện HTTP có tên là cURL.

Cả hai cách tiếp cận này đều có những ưu điểm riêng của chúng.

Cách “xử lý tệp cơ bản”: Đây là cách cơ bản và dễ dàng nhất để hoàn thành nhiệm vụ. Cũng giống như bất kỳ tệp nào khác, hãy bắt đầu bằng việc tạo tệp trống và mở tệp đó ở chế độ “ghi”. Sau đó, đọc nội dung từ URL nguồn vào tệp này. Vậy là xong, nó là đơn giản như tên gọi của chính nó – “xử lý tệp cơ bản”.

Bạn có thể hình dung ra những gì đoạn lệnh này làm:

Đoạn code luu hinh anh tu url trong php basic

Nó lưu hình ảnh vào máy chủ với tên daipho-6-1.png.

Bây giờ vấn đề duy nhất với phương pháp lập trình này là nó yêu cầu allow_url_fopen phải được cấu hình là 1, được đặt thành 1 theo mặc định. Nhưng đôi khi, các yêu cầu của dự án từ quản trị hệ thống lại không cho phép bật tùy chọn này. Điều này có thể là do các cấu hình bảo mật hoặc chỉ là một nguyên tắc thiết kế. Trong những trường hợp như vậy, có một phương pháp khác để lưu hình ảnh.

Bạn có thể kết hợp với PHP Regular Expressions để xử lý các URL truyền vào.

Sử dụng thư viện HTTP tên cURL: Nói một cách chính xác, cURL không chỉ là một thư viện HTTP. Nó cũng có một số giao thức truyền dữ liệu khác. Vì hình ảnh nằm trên máy chủ HTTP, Dai Pho sẽ chỉ đề cập một phần nhỏ này của thư viện này.

cURL cho phép thực hiện các yêu cầu HTTP trong PHP. Bắt đầu bằng cách khởi tạo một phiên bản của nó và thiết lập một số tùy chọn cần thiết cho yêu cầu, bao gồm cả chính URL. Sau khi thực hiện truy vấn này trả về nội dung của tệp, phần còn lại của quy trình vẫn như cũ. Ngay sau khi Dai Pho nhận được dữ liệu tải về, Dai Pho sẽ lưu nó vào một tệp.

Thực hiện:

Trong tập lệnh này, chúng tôi đã xác định một hàm curl_file_get_daiphocontents để sao chép hành vi của file_get_contents từ kỹ thuật đã đề cập trước đó.

Bên trong hàm này, DaiPho khởi tạo một phiên bản của cURL bằng cách sử dụng hàm curl_init để sử dụng để tìm nạp dữ liệu.

Sau đó, một số tùy chọn cần được đặt bằng curl_setopt để ví dụ cụ thể này có thể hoạt động. Hàm này có ba đối số

  • Một kế thừa của cURL
  • Tùy chọn tương ứng cần được gán
  • Và giá trị mà tùy chọn được gán

Trong ví dụ này, các tùy chọn sau được gán:

  • CURLOPT_HEADER, để đảm bảo bạn có cần nhận các header hay không;
  • CURLOPT_RETURNTRANSFER truyền dữ liệu dưới dạng giá trị trả về của hàm curl_exec thay vì xuất trực tiếp.
  • Có một tùy chọn khác CURLOPT_URL đặt URL cho yêu cầu.

Sau đó, Daipho tìm nạp dữ liệu từ curl_exec và trả về nó từ hàm cha.

Dữ liệu này sau đó được ghi vào tệp trên máy của Daipho bằng file_put_contents.

Đoạn code luu hinh anh tu url trong php bang thu vien curl

Phương pháp này mang lại thêm sự linh hoạt khi tìm nạp nội dung từ internet. Như đã đề cập trước đó, nó không chỉ giới hạn ở HTTP mà còn có thể được sử dụng trong nhiều trường hợp khác. Nó cho phép cấu hình việc truyền tải theo bất kỳ cách nào bạn muốn. Ví dụ: file_get_contents sử dụng một yêu cầu GET đơn giản để tìm nạp dữ liệu, nhưng với cURL, cũng có thể sử dụng GET, POST, PUT và các phương thức khác.

PHP là một ngôn ngữ kịch bản phía máy chủ được thiết kế đặc biệt để phát triển web. Bạn có thể các ví dụ mã nguồn PHP tại đây: https://www.daipho.com/blogtag/php/.

Các tính năng mặc định của trang web

Các trang web được Đại Phố thiết kế luôn mặc định các tính năng sau:

  • Mã nguồn được tối ưu với các công cụ tìm kiếm.
  • Trang web hỗ trợ thiết bị di động, tương thích với mọi thiết bị: điện thoại, máy tính bảng, máy tính và laptop. Sử dụng công nghệ HTML5, CSS3 Mobile Responsive.
  • Dễ dàng thay đổi theo phong cách riêng của bạn.
  • Dễ dàng thêm bớt số lượng các trang, và chỉnh sửa nội hiển thị trên website tùy ý
  • Phần quản trị rõ ràng, trực quan, dễ sử dụng với cả những người không chuyên về IT.

Quản lí nội dung: có thể dễ dàng thêm, xóa, sửa các thông tin trên website

  • Thông tin sản phẩm và dịch vụ của công ty
  • Thông tin dự án, đối tác Giới thiệu – Liên hệ
  • Thông tin giới thiệu, thông tin liên hệ
  • Tin tức
  • Hình ảnh trên website, sửa các tag alt, descriotion, caption
  • Hình ảnh và caption trên Slideshow
Xin vui lòng liên hệ với chúng tôi nếu cần thêm thông tin
host lưu lượng lớn, chèn từ khóa vào trang web, thương mại điện tử,