คู่มือการใช้งาน CodeIgniter เวอร์ชั่น 1.7.2


FTP Class

คลาส FTP ของ CodeIgniter ยอมให้คุณจัดการไฟล์เซิร์ฟเวอร์ทางไกลได้ ไฟล์ทางไกลสามารถย้าย , เปลี่ยนชื่อ, และลบ คลาส FTP ยังมีฟังก์ชัน "mirroring" ที่ทำให้ไดเรคทอรี่ในเครื่องถูกสร้างให้เหมือนกันใน FTP ทางไกลได้

Note:  SFTP and SSL FTP protocols are not supported, only standard FTP.

เริ่มต้นใช้คลาส

เหมือนคลาสอื่นๆของ CodeIgniter คลาส FTP นั้นเริ่มต้นได้ในตัวบควมคุม(controller) โดยใช้ฟังก์ชัน $this->load->library

$this->load->library('ftp');

เมื่อโหลดแล้วคุณสามารถใช้ออบเจ็ค FTP ได้โดยการใช้ $this->ftp

ตัวอย่างการใช้งาน

ในตัวอย่างนี้จะเปิดเซิร์ฟเวอร์ FTP และอ่านไฟล์ในเครื่องแล้วอัพโหลดในรูปแบบ ASCII และตั้งค่ายินยอมของไฟล์ไปที่ 755 ข้อควรจำ: การเปลี่ยนค่ายินยอมจำเป็นต้องใช้ PHP 5

$this->load->library('ftp');

$config['hostname'] = 'ftp.example.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['debug'] = TRUE;

$this->ftp->connect($config);

$this->ftp->upload('/local/path/to/myfile.html', '/public_html/myfile.html', 'ascii', 0775);

$this->ftp->close();

ในตัวอย่างนี้เป็นการแสดงไฟล์ที่ได้รับมาจากทางฝั่งเซิร์ฟเวอร์

$this->load->library('ftp');

$config['hostname'] = 'ftp.example.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['debug'] = TRUE;

$this->ftp->connect($config);

$list = $this->ftp->list_files('/public_html/');

print_r($list);

$this->ftp->close();

ในตัวอย่างนี้คือไดเรคทอรี่ในเครื่องถูกสร้างให้เหมือนบนเซิร์ฟเวอร์

$this->load->library('ftp');

$config['hostname'] = 'ftp.example.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['debug'] = TRUE;

$this->ftp->connect($config);

$this->ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/');

$this->ftp->close();

ฟังก์ชันอ้างอิง

$this->ftp->connect()

ติดต่อและบันทึกข้อมูลเวลาติดต่อไปยังเซิร์ฟเวอร์ FTP การปรับแต่งการเชื่อมต่อนั้นสามารถทำได้โดยการใส่อาเรย์ไปยังฟังก์ชัน หรือคุณสามารถเก็บมันไว้ในไฟล์ปรับแต่งได้

นี้คือตัวอย่างที่แสดงการตั้งค่าด้วยตนเอง

$this->load->library('ftp');

$config['hostname'] = 'ftp.example.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['port']     = 21;
$config['passive']  = FALSE;
$config['debug']    = TRUE;

$this->ftp->connect($config);

ตั้งค่าปรับแต่ง FTP ในไฟล์ปรับแต่ง

ถ้าคุณต้องการที่จะเก็บค่าปรับแต่งไว้ในไฟล์ปรับแต่ง ทำได้ง่ายๆโดยสร้างไฟล์ที่ชื่อ ftp.php และใส่อาเรย์ตัวแปร $config ลงไปในไฟล์นั้น จากนั้นบันทึกเป็นไฟล์แล้วนำไปวางไว้ที่ config/ftp.php และมันจะถูกใช้อย่างอัตโนมัติ

ค่าปรับการเชื่อมต่อที่สามารถใช้ได้

$this->ftp->upload()

อัพโหลดไฟล์ขึ้นไปยังเซิร์ฟเวอร์ คุณต้องใส่ตำแหน่งไฟล์ในเครื่อง(local path) และตำแหน่งไฟล์ทางไกล(remote path) และคุณยังสามารถตั้งโหมดและค่ายินยอม (permission) ตัวอย่างเช่น

$this->ftp->upload('/local/path/to/myfile.html', '/public_html/myfile.html', 'ascii', 0775);

ทางเลือกโหมดมีดังนี้:  ascii, binary, และ auto (ค่าตั้งต้น). ถ้า auto ถูกใช้มันจะตั้งโหมดตามนามสกุลไฟล์ของไฟล์ต้นฉบับ

การตั้งค่าการยินยอมสามารถใช้ได้เฉพาะถ้าคุณใช้ PHP 5 และสามารถส่งค่าเป็น octal (เลขฐานแปด) ในพารามิเตอร์ที่สี่

$this->ftp->rename()

ยอมให้คุณเปลี่ยนชื่อไฟล์ โดยให้ใส่ตำแหน่งชื่อไฟล์ และตำแหน่งชื่อไฟล์ใหม่

// เปลี่ยนจาก green.html เป็น blue.html
$this->ftp->rename('/public_html/foo/green.html', '/public_html/foo/blue.html');

$this->ftp->move()

ให้คุยย้ายไฟล์ โดยใส่แหล่งตั้งต้นแล้วก็ปลายทางที่ต้องการ

// ย้าย blog.html จาก "joe" ไป "fred"
$this->ftp->move('/public_html/joe/blog.html', '/public_html/fred/blog.html');

ข้อสังเกตุ: ถ้าปลายทางของไฟล์ชื่อเปลี่ยนไปมันก็จะเปลี่ยนชื่อไฟล์ด้วย

$this->ftp->delete_file()

ให้คุณลบไฟล์โดยใส่ตำแหน่งของไฟล์

$this->ftp->delete_file('/public_html/joe/blog.html');

$this->ftp->delete_dir()

ยอมให้คุณลบไดเรคทอรี่และทุกอย่างที่อยู่ภายในมัน โดยใส่ตำแหน่งของไดเรคทอรี่และจบด้วย / (trailing slash)

สิ่งสำคัญ  จะต้องระมัดระวังในการใช้ฟังก์ชันนี้ มันจะลบ ทุกอย่าง ภายในตำแหน่งที่คุณบอก รวมถึงโฟลเดอร์ภายในและไฟล์ทุกไฟล์ โดยให้คุณแน่ใจว่าตำแหน่งถูกต้อง โดยคุณควรลองใช้ฟังก์ชัน list_files() ก่อนเพื่อพิสูจน์ว่ามีตำแหน่งนั้นจริง

$this->ftp->delete_dir('/public_html/path/to/folder/');

$this->ftp->list_files()

ยอมให้คุณรับรายการของไฟล์ทั้งหมดบนตำแหน่งที่คุณต้องการบนเซิร์ฟเวอร์ และคืนมาเป็น อาเรย์ โดยคุณต้องใส่ตำแหน่งของไดเรคทอรี่ที่คุณต้องการลงไป

$list = $this->ftp->list_files('/public_html/');

print_r($list);

$this->ftp->mirror()

Recursively reads a local folder and everything it contains (including sub-folders) and creates a mirror via FTP based on it. Whatever the directory structure of the original file path will be recreated on the server. You must supply a source path and a destination path:

$this->ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/');

$this->ftp->mkdir()

ยอมให้คุณสร้างไดเรคทอรี่บนเซิร์ฟเวอร์ของคุณ โดยใส่ตำแหน่งลงไปพร้อมกับชื่อโฟลเดอร์ที่ต้องการและจบด้วย / (trailing slash) คุณยังสามารถตั้งค่ายินยอมโฟลเดอร์ได้โดยส่งค่า octal ไปยังพารามิเตอ์รที่สอง (ใช้ได้แต่ต้องใช้ PHP 5 นะ)

// สร้างโฟลเดอร์ชื่อ "bar"
$this->ftp->mkdir('/public_html/foo/bar/', DIR_WRITE_MODE);

$this->ftp->chmod()

ยอมให้คุณตั้งค่ายินยอมของไฟล์ (file permissions) โดยใส่เส้นทางของไฟล์หรือโฟลเดอร์ลงไปตามด้วยค่ายินยอมที่ต้องการ

// Chmod "bar" เป็น 777
$this->ftp->chmod('/public_html/foo/bar/', DIR_WRITE_MODE);

$this->ftp->close();

ปิดการเชื่อมต่อไปยังเซิร์ฟเวอร์ของคุณ แนะนำให้คุณใช้มันเมื่อคุณเสร็จการอัพโหลดเสร็จแล้ว