Để lưu file (ảnh, video) từ 1 url, trong php có rất nhiều cách làm, chúng tôi VinaSupport đã tổng hợp 4 cách sau: Show
1. Hàm file_get_contents, file_put_contentsSử dụng hàm file_get_contents để lấy nội dung của của url và file_put_contents để lưu lại nội dung thành file. $url = 'https://vinasupport.com/assets/img/vinasupport_logo.png'; $saveUrl = '/tmp/vinasupport_logo.png'; file_put_contents($saveUrl, file_get_contents($url)); Tham khảo Doc của PHP ở đây.
Yêu cầu tham số allow_url_fopen trong php.ini phải set là true 2. Hàm copycopy('https://vinasupport.com/assets/img/vinasupport_logo.png', '/tmp/vinasupport_logo.png'); Tham khảo Doc của hàm copy ở đây, nó cũng yêu cầu tham số allow_url_fopen trong php.ini phải set là true
3. Sử dụng fopenMột phương án khác là các bạn sử dụng hàm fopen, fread, fwrite để xử lý lưu file như bên dưới $in = fopen('https://vinasupport.com/assets/img/vinasupport_logo.png', "rb"); $out = fopen('/tmp/vinasupport_logo.png', "wb"); while ($chunk = fread($in,8192)) { fwrite($out, $chunk, 8192); } fclose($in); fclose($out); 4. Sử dụng CURLĐây là phương án xử lý lưu file tốt nhất và hiệu quả nhất hiện này với rất nhiều tùy chọn. set_time_limit(0); $image = 'https://vinasupport.com/assets/img/vinasupport_logo.png'; // Save image name $saveImageName = basename($image); // Save Image Path $saveImagePath = '/tmp/' . $saveImageName; // This is the file where we save the information $fp = fopen ($saveImagePath, 'w+'); // Here is the file we are downloading, replace spaces with %20 $ch = curl_init(str_replace(" ","%20",$image)); curl_setopt($ch, CURLOPT_TIMEOUT, 50); // write curl response to file curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // get curl response curl_exec($ch); curl_close($ch); fclose($fp); Nguồn: vinasupport.com Bên cạnh cách thông tin đấy lên server qua form chúng ta cũng sử dụng url làm phương tiện rất hữu hiệu để truyền các tham số cần thiết không cần qua form. Việc sử dụng tham số trên URL thường giúp chúng ta sử dụng để đẩy các thông tin cần đều hướng và xử lý trong hệ thống của chúng ta. Ví dụ chúng ta cần thực hiện hành động edit một bài viết ta có thể đẩy lên url theo đường link như sau
Giải thích: Trong url trên ta đẩy lên 3 tham số - mod: Module xử lý - view: View xử lý - id: ID bài viết cần xử lý CÁCH XÂY DỰNG URL CÓ CHỨA THAM SỐ
CÁCH LẤY DỮ LIỆU THAM SỐ URL
Ghi nhớ
Url Linkhttp://hocweb123.com/truyen-tham-so-qua-url-trong-php.html Nhiều lúc bạn rất muốn tải hình ảnh từ bất kỳ đường dẫn của Website nào, một cách rất đơn giản đó là click chuột phải và ấn lưu hình ảnh. Nhưng trong lập trình bạn muốn tải ảnh từ url thì bạn phải viết chương trình để máy tính có thể hiểu được để tải ảnh cho bạn. Vì vậy trong bài viết này vncoder.vn sẽ hướng dẫn cách lưu ảnh từ đường dẫn URL trong PHP. Có 2 cách để bạn có thể lấy ảnh từ website khác:
Cả 2 cách để lưu ảnh trong php này đều có ưu điểm và nhược điểm riêng, giờ chúng ta đi vào từng cách dùng cụ thể nhé. 1. Sử dụng cách Xử lý tệp cơ bảnĐây là cách cơ bản và dễ nhất để hoàn thành nhiệm vụ. Cũng giống như bất kỳ tập tin nào khác, hãy bắt đầu với việc tạo một tập tin trống và mở nó trong chế độ ghi (write). Sau đó, tìm lấy nội dung từ URL nguồn và dán nó vào tệp này. Chỉ đơn giản vậy thôi. Từ kịch bản trên ta có các bước cụ thể như sau:
Ví dụ:
Lưu ý: Code trên lưu hình ảnh vào máy chủ với tên new_name.png đã đặt ở trên. Nhược điểm: Bây giờ vấn đề duy nhất với phương thức này là nó yêu cầu cấu hình allow_url_fopen được bật và được đặt thành 1 theo mặc định. Nhưng đôi khi, các yêu cầu của dự án không cho phép có tùy chọn này. Điều này có thể là do một số biện pháp phòng ngừa an ninh hoặc chỉ là một nguyên tắc thiết kế. Trong những trường hợp như vậy chúng ta có một phương pháp khác để lưu hình ảnh. 2. Sử dụng thư viện HTTP, cURLNói đúng ra, cURL không chỉ là 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 của chúng ta nằm trên máy chủ HTTP, chúng ta sẽ giới hạn bản nghiên cứu một phần nhỏ 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 thể hiệ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ả URL. Sau đó thực hiện truy vấn này trả về nội dung của tệp. Sau đó, phần còn lại của thủ tục là như nhau. Ngay sau khi chúng ta nhận được dữ liệu, hãy đặt nó vào một tệp và lưu nó. (Giống cách bên trên). Các bước cụ thể
Ví dụ cụ thể:
Phương pháp này cung cấp một chút linh hoạt trong 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 chuyển đổi theo bất cứ cách nào bạn muốn. Ví dụ: file_get_contents chỉ 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ó thể sử dụng GET, POST, PUT và các phương thức khác. 3. Kết luậnTrên đây là 2 cách lưu ảnh từ đường dẫn URL trong PHP mà vncoder.vn đã hướng dẫn rất chi tiết cho các bạn. Hy vọng với bài viết này sẽ giúp ích cho các bạn. Chúc bạn thành công!. 4. Xem thêm
|