Ring ring
logo

Chatbox|Admin nhận làm wap/web, giá cả thương lượng... Thông tin admin tại mỗi bài viết.
Home · Bang hội ·
* Đăng Nhập hoặc Đăng Kí
để sử dụng hết chức năng của diễn đàn.
Hi, Khách!
HomeBang hội » Wapmaster » PHP » Upload File Lên Một Host Khác Thông Qua Curl
Xuống dưới » Upload File Lên Một Host Khác Thông Qua Curl
avatar by Pham_loi Pham_loi
Chức vụ:
03:13:31, 18-08-2015

Cách mình đưa ra sau đây k phải là tối ưu nhất nhưng vì nó là một ứng dụng khá hay của cURL nên mình chia sẻ cho ai muốn biết. ý tưởng là mình có 1 ảnh nào đó hoạc 1 file nào đó ,mình có 2 host, 1 host chính để chạy code 1 host phụ để upload file lên, vậy mình sẽ thiết kế 2 script 1 để ở host chính nơi thực hiện các thao tác gửi file, 1 ở host phụ nơi thực hiện công việc nhận và lưu file.để đơn giản mình sẽ thiết kế 1 file là index.php đặt ở thư mục /bai1 trên teenclub.info, code như sau:
<meta charset="utf-8" />
<?
/* hàm get file */
function prince_get_file ($url) {
  $p = curl_init ($url);
  curl_setopt ($p, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt ($p, CURLOPT_BINARYTRANSFER, 1);
  $res = curl_exec ($p);
  curl_close ($p);
  return $res;

  }
/* hàm upload file */
function prince_upload_file ($url,$post) {
  $p = curl_init ($url);
  curl_setopt ($p, CURLOPT_POST, 1);
  curl_setopt ($p, CURLOPT_POSTFIELDS, $post);
  curl_setopt ($p, CURLOPT_RETURNTRANSFER, 1);
  $res = curl_exec ($p);
  curl_close ($p);
  return $res;
  }
$a = prince_get_file ('http://c.gocmobile.net/data/avatars/m/33/33383.jpg?1377001095'); /* lấy nguồn file dưới dạng binary */
$n = time () . '.jpg'; /* đặt tên file */
@mkdir ('up',0777); /* tạo thư mục upload  tạm thời*/
$im = fopen ('up/' . $n,'wb');
fwrite ($im, $a);
fclose ($im); /* lưu file ảnh get được vào thư mục tạm thời trên host chính */
$file_name_with_full_path = realpath('./up/' . $n); /* lấy đường dẫn tuyệt đối */
$post = array('file_contents'=>'@'.$file_name_with_full_path); /* thiết kế mảng post dữ liệu */
echo prince_upload_file ('http://giaitri-truyenngan.rhcloud.com/upload.php',$post); /* upload và lấy kết quả trả về */
unlink ('up/' . $n); /* xóa file tạm*/

Copy code

và trên host phụ là http://giaitri-truyenngan.rhcloud.com/ mình tạo 1 file là upload.php trong thư mục gốc root như sau
<?php
$uploaddir 
realpath('./') . '/';
$uploadfile $uploaddir basename($_FILES['file_contents'['name');
    if (
move_uploaded_file($_FILES['file_contents'['tmp_name'$uploadfile)) {
        echo 
"đã được tải lên thành công.\n";
        echo 
$uploaddir basename($_FILES['file_contents'['name');
    } else {
        echo 
"thất bại!\n";
    }
?>

Copy code

nhiệm vụ chỉ là nhận file gửi đến và lưu lên đĩa. vậy là ta có 1 code hoàn chỉnh r, hiện tại mình chỉ để 1 link ảnh cho việc test nên việc chế biến nó để nhận các link khác và kiểu file khác ngoài ảnh là quá đơn giản dành cho các bạn tự nghịch! như đã nói ở trên cách này không phải là tối ưu tuy nhiên nó là 1 phần trong curl mà lâu nay ít người chạm tới. hiện tại mình nghĩ dc 1 cách tooid ưu hn cách trên là vẫn 2 host A và B thì A nhận 1 link file -> gửi link cho B, B nhạn link và thực hiện tải file về lưu lại và trả lại đườn dẫn trược tiếp cho A, cách này cũng chỉ để dùng curl trong việc tải file, còn nếu như upload lên host chính r host chính gửi sang host phụ để lưu thì phải dùng cách 1 ở trên í. chúc vui :)

Like: 0
Lên trên  Tổng số: 1







Trực Tuyến: Khách: 1
Diễn đàn teen Việt Nam
CopyRight 2014