พึ่งเคยใช้งานครั้งแรกโปรดอ่านที่นี่! howtouse!
x
  • Register
หางานด้าน IT อยู่เหรอ?

Host ที่เช่าไม่ได้เปิด allow_url_fopen มีทางไหนที่จะดึงไฟล์มาเก็บใน host ของเราได้บ้างครับ

+1 vote
คือผมจะดึงรูปจาก facebook มาสร้างรูปภาพใหม่

แบบที่เขาทำ app  facebook  แล้วเอารูปโปร์ไฟล์มาใช้อ่ะครับ
ถามเมื่อ May 18, 2012 in PHP & MySQL & Ajax โดย จุ๊ย คนไร้วาสนาพระเจ (157 คะแนน)
   

1 Answer

0 votes

ลอง curl แทนดูครับ หรือถ้า server เป็น apache ก็ลอง ใช้ .htaccess set allow_url_fopen ดู



php_flag allow_url_fopen 1
หรือ
php_value allow_url_fopen 1

ไม่แน่ใจ หลังจาก set แล้วลอง phpinfo() ดูครับ
ตอบเมื่อ May 18, 2012 โดย Krurkrit Phoosakul (1,174 คะแนน)
ลองทำตามล่ะ ครับไม่ได้ TT^TT
ใช้ curl ก็ม่ะได้

ใช้ curl ดึงข้อมูลที่เป็น json มาได้
แต่จะไปดึงเอารูปภาพม่ะได้อ่ะ TT^TT
ลอง set option CURLOPT_BINARYTRANSFER ดูยังครับ
ได้แล้วครับ

$image_url = "http://1.bp.blogspot.com/_v5GFE8gXk5g/TU75tfm_YoI/AAAAAAAAAX4/6vvblz-LK5w/s1600/kitten.jpg";
$ch = curl_init();
$timeout = 0;
curl_setopt ($ch, CURLOPT_URL, $image_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
$image = curl_exec($ch);
curl_close($ch);
header("Content-type: image/jpeg");
print $image;

แต่ดึงจาก facebook ม่ะได้ TT^TT อ๊าากกก อยากยอมแพ้แระ
จะดึงรูปจาก facebook หรอครับ
ผมใช้ 2 ฟังชั้นนี้แต่ไม่รู้จะ ดีหีือป่าวแต่ใช้ได้ผล

1. โยนไฟล์ไปที่ต้องการ
public function extimgurl($url_from,$filename,$dirpath)
    {

$url=$url_from ;
$dir=$dirpath;

$lfile = fopen($dir . basename($filename), "w");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FILE, $lfile);
$image = curl_exec($ch);
fclose($lfile);
curl_close($ch);
    }

2 โหลดข้อมูล      CURLOPT_HEADER
public function LoadJpeg($url) {
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
  curl_setopt($ch, CURLOPT_HEADER, true); // header will be at output
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'HEAD'); // HTTP request is 'HEAD'
  $fileContents = curl_exec($ch);
  curl_close($ch);
  $img = $fileContents;

  return $img;
}
นำไปใช้ ลองแกะดูน๊ะครับ

วิธีเรียก url รูปที่แท้จริง
$file_upkk=date("Now").time().".jpg";  ชื่อไฟล์ที่จะบันทึก
$url = 'http://graph.facebook.com/'.$_GET["fbid"].'/picture?type=large';
            if (preg_match("#\bhttps?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#", $this->LoadJpeg($url), $matches, PREG_OFFSET_CAPTURE)) {
           $img_file = $matches[0][0];
}
เซฟรูปไปที่ที่เราต้องการ

$this->extimgurl($img_file,$file_upkk,"images/imageprofile/");

Related questions

+2 votes
1 คำตอบ
195 views ถามเมื่อ May 3, 2012 in PHP & MySQL & Ajax โดย Farkham Break-love (242 คะแนน)
+1 vote
2 คำตอบ
...