|
|
|
รบกวนช่วย>>> ใช้ php กับไลน์บอทเก็บรูปภาพ แต่บอทเก็บภาพไม่ครบ |
|
|
|
|
|
|
|
ส่ง 1-2 รูป บอทสามารถเซฟรูปทัน แต่พอส่ง 3 รูปขึ้นไป บอทเซฟไม่ทัน
ทดลองเองแล้วจากตัวอย่างด้านล่างก็ยังไม่ได้เหมือนเดิม จนปัญญาแล้วครับ รบกวนช่วยทีครับ
Code (PHP)
// ถ้าเป้น Message Event
if(!is_null($eventMessage)){
$typeMessage = $eventObj->getMessageType();
// เก็บค่า id ของข้อความ
$idMessage = $eventObj->getMessageId();
// image
if($typeMessage=='image'){
$responseMedia = $bot->getMessageContent($idMessage);
if ($responseMedia->isSucceeded()) {
$dataBinary = $responseMedia->getRawBody(); // return binary
$fileType = $responseMedia->getHeader('Content-Type');
if (preg_match('/image/',$fileType)) {
list($fileType,$ext) = explode("/",$fileType);
$ext = ($ext=='jpeg' || $ext=='jpg')?"jpg":$ext;
$fileNameSave = time().".".$ext;
}
$botDataFolder = 'LAMSAM /'; // โฟลเดอร์หลักที่จะบันทึกไฟล์
$botDataUserFolder = $botDataFolder.$sourceType.'-'.$sourceId;
if(!file_exists($botDataUserFolder)) { // ตรวจสอบ
mkdir($botDataUserFolder, 0777, true);
}
// กำหนด path ของไฟล์ที่จะบันทึก
$fileFullSavePath = $botDataUserFolder.'/'.$fileNameSave;
file_put_contents($fileFullSavePath,$dataBinary);
// Directory
//$directory = "/botData/$botDataUserFolder";
// Returns array of files
$files = scandir($botDataUserFolder);
// Count number of files and store them to variable..
$num_files = count($files)-2;
$textReplyMessage = "รวม= $num_files แผ่น";
$replyData = new TextMessageBuilder($textReplyMessage);
//$failMessage = json_encode($fileType);
//$failMessage = json_encode($responseMedia->getHeaders());
//$replyData = new TextMessageBuilder($failMessage);
}else{
$failMessage = json_encode($idMessage.' '.$responseMedia->getHTTPStatus() . ' ' .$responseMedia->getRawBody());
$replyData = new TextMessageBuilder($failMessage);
}
ทดลองวนloop มั่วๆเองดู แต่ไม่ได้ครับ
Code (PHP)
// ถ้าเป็น image
if($typeMessage=='image'){
for ($i = 0; $i < count($typeMessage); ++$i){
$responseMedia[$i] = $bot->getMessageContent($idMessage);
if ($responseMedia[$i]->isSucceeded()) {
// คำสั่ง getRawBody() ในกรณีนี้ จะได้ข้อมูลส่งกลับมาเป็น binary
// เราสามารถเอาข้อมูลไปบันทึกเป็นไฟล์ได้
$dataBinary[$i] = $responseMedia[$i]->getRawBody(); // return binary
// ดึงข้อมูลประเภทของไฟล์ จาก header
$fileType[$i] = $responseMedia[$i]->getHeader('Content-Type');
if (preg_match('/image/',$fileType[$i])) {
list($fileType[$i],$ext) = explode("/",$fileType[$i]);
$ext = ($ext=='jpeg' || $ext=='jpg')?"jpg":$ext;
$fileNameSave[$i] = time().".".$ext;
}
$botDataFolder = 'LAMSAM PAPER/'; // โฟลเดอร์หลักที่จะบันทึกไฟล์
$botDataUserFolder = $botDataFolder.$sourceType.'-'.$sourceId;// มีโฟลเดอร์ด้านในเป็น sourceId อีกขั้น
if(!file_exists($botDataUserFolder)) { // ตรวจสอบถ้ายังไม่มีให้สร้างโฟลเดอร์ sourceId
mkdir($botDataUserFolder, 0777, true);
}
// กำหนด path ของไฟล์ที่จะบันทึก
$fileFullSavePath = $botDataUserFolder.'/'.$fileNameSave[$i];
file_put_contents($fileFullSavePath,$dataBinary[$i]);
Tag : PHP, MySQL, Node.js
|
ประวัติการแก้ไข 2019-05-14 20:13:48 2019-05-14 20:18:14 2019-05-14 20:22:14 2019-05-14 20:23:32 2019-05-14 20:24:20
|
|
|
|
|
Date :
2019-05-14 20:11:51 |
By :
pwbank |
View :
1824 |
Reply :
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ปัญหาน่าจะเกิด Save ยังไม่เสร็จ แต่มีรูปใหม่ขึ้นมา เลยทำให้ Process ทำงานไม่สำเร็จครับ
|
|
|
|
|
Date :
2019-05-22 18:09:24 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|