Q - สอบถามวิธี Upload file html ไปยัง web service โดยใช้คำสั่ง curl ใน PHP

ตอบกระทู้

รูปแสดงอารมณ์
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
รูปแสดงอารมณ์อื่นๆ

BBCode เปิด
[img] เปิด
[url] เปิด
[Smile icon] เปิด

กระทู้แนะนำ
   

มุมมองที่ขยายได้ กระทู้แนะนำ: Q - สอบถามวิธี Upload file html ไปยัง web service โดยใช้คำสั่ง curl ใน PHP

Re: Q - สอบถามวิธี Upload file html ไปยัง web service โดยใช้คำสั่ง curl ใน PHP

โดย birdkritsna » 10/10/2019 2:07 pm

mindphp เขียน:
เอาโค้ดตัวอย่างมาจากไหน
เข้าใจ แต่ละบรรทัดในคำสั่ง หรือเปล่า

ลิงค์ที่ให้ เพื่อให้อ่านและทำความเข้าใจ ก่อน ที่จะนำมาประยุกต์กับงานได้ต้องมีความเข้าใจก่อน
และ ถ้าไม่เข้าใจคำสั่งไหน ตามลิงค์ ที่ให้ ให้ถามมาเป็นบรรทัดๆ ลงในกระทู้เดิมที่เค้าแนะนำไว้
นำมาจากลิงค์นี้ครับ
http://code.iamkate.com/php/sending-files-using-curl/
https://coderwall.com/p/fck2ta/how-to-send-files-via-curl-in-php

ส่วนคำสั่งการส่งค่าไปยังเว็บนี่ ใช้แบบนี้ถูกไหมครับ

โค้ด: เลือกทั้งหมด

curl_setopt($ch, CURLOPT_URL, '[host service]');
เพราะผมลองส่งค่าไปยัง host หนึ่งแล้วขึ้นว่า
Not Found
The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.

Re: Q - สอบถามวิธี Upload file html ไปยัง web service โดยใช้คำสั่ง curl ใน PHP

โดย mindphp » 10/10/2019 1:36 pm

mindphp เขียน:เอาโค้ดตัวอย่างมาจากไหน

ลองต้นดูในบอร์ดนี้หรือยัง
search.php?keywords=curl_setopt&terms=a ... B%E0%B8%B2
เอาโค้ดตัวอย่างมาจากไหน
เข้าใจ แต่ละบรรทัดในคำสั่ง หรือเปล่า

ลิงค์ที่ให้ เพื่อให้อ่านและทำความเข้าใจ ก่อน ที่จะนำมาประยุกต์กับงานได้ต้องมีความเข้าใจก่อน
และ ถ้าไม่เข้าใจคำสั่งไหน ตามลิงค์ ที่ให้ ให้ถามมาเป็นบรรทัดๆ ลงในกระทู้เดิมที่เค้าแนะนำไว้

Re: Q - สอบถามวิธี Upload file html ไปยัง web service โดยใช้คำสั่ง curl ใน PHP

โดย birdkritsna » 10/10/2019 12:05 pm

mindphp เขียน:เอาโค้ดตัวอย่างมาจากไหน

ลองต้นดูในบอร์ดนี้หรือยัง
search.php?keywords=curl_setopt&terms=a ... B%E0%B8%B2
ลองศึกษาแล้วครับ ในบอร์ดยังไม่เห็นมีตัวอย่างการส่งไฟล์ไปตาม url ผมเลยลองปรับใช้ตาม command ดูครับ แต่ผลยังเป็นเหมือนเดิมตามข้างต้นครับ ไม่ทราบว่าถูกผิดตรงไหนครับ

โค้ด: เลือกทั้งหมด

<?php
include 'connect.php';
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, '[host web]');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, "user:pass");
curl_setopt($ch, CURLOPT_POST, true);

$postData = array(
    'fileupload' => '@D:/xampp/htdocs/joomla_testing/tools/tools_pdf_converter/file/filehtml.html',
    'typefile' => '1'
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);

// output the response
$output = curl_exec($ch);
echo $output;

// close the session
curl_close($ch);

Re: Q - สอบถามวิธี Upload file html ไปยัง web service โดยใช้คำสั่ง curl ใน PHP

โดย mindphp » 10/10/2019 11:20 am

เอาโค้ดตัวอย่างมาจากไหน

ลองต้นดูในบอร์ดนี้หรือยัง
search.php?keywords=curl_setopt&terms=a ... B%E0%B8%B2

Re: Q - สอบถามวิธี Upload file html ไปยัง web service โดยใช้คำสั่ง curl ใน PHP

โดย birdkritsna » 10/10/2019 10:37 am

mindphp เขียน:กำหนด การส่งค่า curl ของใน php แบบ Post กำหนด parameter ให้เป็นแบบเดียวกับที่ทำในแบบ command

ขอบคุณครับผม
ผมลองศึกษาแล้วนำมาปรับใช้ดูแล้ว ขึ้นหน้าจอ Error ครับ

โค้ด: เลือกทั้งหมด

<?php
include 'connect.php';
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, '[Host Webservice]/');
curl_setopt($ch, CURLOPT_USERPWD, "user:pass");
curl_setopt($ch, CURLOPT_POST, true);
   curl_setopt(
    $ch, CURLOPT_POSTFIELDS, array(
      'fileupload' => '@' . realpath('path ไฟล์ html')
    ));

$output = curl_exec($ch);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
echo $output;

curl_close($ch);

(แก้ไข url : user : pass)

ผลลัพธ์ครับ
2019-10-10_10-34-00.jpg
2019-10-10_10-34-00.jpg (21.22 KiB) Viewed 1212 times

Re: Q - สอบถามวิธี Upload file html ไปยัง web service โดยใช้คำสั่ง curl ใน PHP

โดย mindphp » 10/10/2019 6:15 am

กำหนด การส่งค่า curl ของใน php แบบ Post กำหนด parameter ให้เป็นแบบเดียวกับที่ทำในแบบ command

Q - สอบถามวิธี Upload file html ไปยัง web service โดยใช้คำสั่ง curl ใน PHP

โดย birdkritsna » 09/10/2019 3:42 pm

คือตอนนี้ผมกำลังทำการอัพโหลดไฟล์ไปยัง web service ตัวหนึ่ง แต่รันผ่าน cmd ซึ่งไฟล์ก็สามารถอัพโหลดไฟล์ html และเรียกใช้ได้แล้วครับ

โค้ด: เลือกทั้งหมด

curl -u user:pass -i -X POST -F fileupload=@[ตำแหน่งไฟล์ ]filehtml.html -F typefile=1 [Host web service]/upload
5.jpg
5.jpg (74.35 KiB) Viewed 1236 times
เรียกใช้โดยการสร้างไฟล์ convert.php (มีปุ่มดาวน์โหลดเชื่อมกับไฟล์นี้) มาแปลงเป็นไฟล์ pdf อีกที

โค้ด: เลือกทั้งหมด

<?php
$url = 'ตำแหน่งไฟล์ .html';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'Host web service/view/1/' . $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, "user:pass");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
 //Save file
$output = curl_exec($ch);
header("Content-type:application/pdf");
header("Content-Disposition:attachment;filename=result.pdf");
//file_put_contents('./file/filehtml.pdf');
echo $output;
exit();
แต่ปัญหาคือ เวลาที่มีการอัพโหลดไฟล์ html อันใหม่ พอเรียกข้อมูลที่มีการแปลงไฟล์เป็น pdf จะได้เป็นไฟล์ของตัวโค๊ด html ที่มีการอัพโหลดไฟล์ผ่าน cmd มาครับ
ผลลัพธ์ของไฟล์ pdf ที่อัพโหลดผ่าน cmd ครับ
7.jpg
7.jpg (20.2 KiB) Viewed 1236 times
อันนี้ข้อมูลในไฟล์ html ที่มีการส่งค่าไปเก็บในโฟลเดอร์ครั้งที่ 2
8.jpg
8.jpg (29.15 KiB) Viewed 1236 times
พอกด ดาวน์โหลดไฟล์
9.jpg
9.jpg (12.37 KiB) Viewed 1236 times
จะได้ไฟล์ pdf ชื่อใหม่มา แต่ข้อมูลเป็น ข้อมูลของ html ที่มีการอัพโหลดไฟล์ผ่าน cmd ครับ
10.jpg
10.jpg (23.71 KiB) Viewed 1236 times
ซึ่งถ้าต้องการไฟล์ข้อมูลไฟล์ html ที่มีการส่งไปในครั้งที่ 2 ต้องทำการอัพโหลดไฟล์ cmd เท่านั้น ถึงจะเรียกข้อมูลมาแปลงเป็นไฟล์ pdf ถูกครับ
เลยอยากทราบวิธีการอัพโหลดไฟล์ html ไปยัง web service โดยผ่านคำสั่ง curl ในภาษา php ครับ

ข้างบน