Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

อัปโหลดไฟล์ด้วย php ไปยังเซิร์ฟเวอร์ php อื่น


ฟังก์ชัน fopen, fread และ fwrite สามารถใช้เพื่อเปิดสตรีมไฟล์ อ่านสตรีมข้อมูล และเขียนข้อมูลดังกล่าวลงในไฟล์ตามลำดับ

ทรัพยากรไฟล์ไม่จำเป็นต้องชี้ไปที่ตำแหน่งบนเครื่องท้องถิ่นเสมอไป

ด้านล่างนี้เป็นตัวอย่างที่ถ่ายโอนไฟล์จากเซิร์ฟเวอร์ภายในไปยังเซิร์ฟเวอร์ ftp -

$file = "file_name.jpg";
$destination = fopen("ftp://username:password@example.com/" . $file, "wb");
$source = file_get_contents($file);
fwrite($destination, $source, strlen($source));
fclose($destination);

อิมเมจจะต้องถูกถ่ายโอนไปยังเซิร์ฟเวอร์ FTP ดังนั้นเซิร์ฟเวอร์จะเปิดในโหมดเขียน และรูปภาพจะถูกเขียนไปยังตำแหน่งนั้นและสตรีมจะปิด

ส่วนขยาย curl ใช้ Client URL Library (libcurl) เพื่อถ่ายโอนไฟล์จากที่หนึ่งไปยังอีกที่หนึ่ง ตรรกะของการใช้โซลูชัน curl เป็นไปตามตรรกะด้านล่าง -

  • เริ่มต้นเซสชันก่อน
  • สามารถตั้งค่าตัวเลือกการโอนที่ต้องการได้
  • สามารถดำเนินการโอนได้
  • ปิดเซสชันได้

เซสชัน curl สามารถเริ่มต้นได้โดยใช้ฟังก์ชัน 'curl_init' ส่งคืนทรัพยากรที่สามารถใช้กับฟังก์ชัน curl อื่น ๆ ได้

ปลายทางในการอัปโหลดไฟล์และปัจจัยอื่นๆ ที่เกี่ยวข้องกับเซสชันการถ่ายโอนสามารถตั้งค่าได้โดยใช้ 'curl_setopt'

สิ่งนี้ใช้ทรัพยากร curl ซึ่งเป็นค่าคงที่ที่กำหนดไว้ล่วงหน้าซึ่งแสดงถึงการตั้งค่าและค่าทางเลือก

ด้านล่างนี้เป็นตัวอย่างที่แสดงให้เห็นเช่นเดียวกัน −

$session_begin = curl_init();
curl_setopt($session_begin, CURLOPT_POST, true);
curl_setopt($session_begin, CURLOPT_POSTFIELDS, array('file' => 'path/to/file.txt'));
curl_setopt($session_begin, CURLOPT_URL, 'https://server2/upload.php');
curl_exec($session_begin);
curl_close($session_begin);

เซิร์ฟเวอร์ที่สองสามารถจัดการได้เหมือนกับการอัปโหลดไฟล์ปกติ