Hay veces que necesitas subir un archivo a otro servidor. En este artÃculo discutiremos sobre cómo subir archivos a un servidor remoto en CodeIgniter. CodeIgniter cuenta con una clase FTP para transferir archivo a otros servidores. Utilizando el sistema de subida de archivos de CodeIgniter y la librerÃa FTP, puedes subir imágenes u otros ficheros a un servidor remoto de forma sencilla.
Primero subiremos el archivo a nuestro servidor utilizando la librerÃa de subida de archivos de CodeIgniter, despues transferiremos el archivo al servidor remoto utilizando la librerÃa FTP de CodeIgniter.
Controlador
Crea un controlador Home llamado Home.php dentro del directorio application/controllers/ que incluya la clase Home. Define una función index() y carga la vista con el formulario para subir archivos. Una vez se ha hecho submit del formulario, debes subir el fichero a tu servidor local. Después tendremos que conectar con el servidor remoto vÃa FTP y subir el fichero del servidor local al servidor remoto. Cuando se haya completado la subida al servidor remoto, puedes eliminar el fichero de tu servidor local. El controlador Home serÃa algo asà como lo que puedes ver más abajo:
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Home extends CI_Controller { function __construct() { parent::__construct(); } public function index(){ if($this->input->post('submit')){ //Upload to the local server $config['upload_path'] = 'uploads/'; $config['allowed_types'] = '*'; $this->load->library('upload', $config); if($this->upload->do_upload('file')) { //Get uploaded file information $upload_data = $this->upload->data(); $fileName = $upload_data['file_name']; //File path at local server $source = 'uploads/'.$fileName; //Load codeigniter FTP class $this->load->library('ftp'); //FTP configuration $ftp_config['hostname'] = 'ftp.example.com'; $ftp_config['username'] = 'ftp_username'; $ftp_config['password'] = 'ftp_password'; $ftp_config['debug'] = TRUE; //Connect to the remote server $this->ftp->connect($ftp_config); //File upload path of remote server $destination = '/assets/'.$fileName; //Upload file to the remote server $this->ftp->upload($source, ".".$destination); //Close FTP connection $this->ftp->close(); //Delete file from local server @unlink($source); } } $this->load->view('home/index'); } }
Vista
Crea un fichero home/index.php dentro del directorio application/views/ e integra el HTML de un formulario de subida de fichero en él, tal que asÃ:
<form method="post" enctype="multipart/form-data"> <label>Choose File</label> <input type="file" name="file" /> <input type="submit" name="submit" value="Upload"> </form>
Creando el directorio de subida
- Crea el directorio de subida en tu servidor local tal y como se menciona en upload_path dentro del controlador Home.
- Crea el directorio de subida en el servidor remoto tal y como se menciona en $destination dentro del controlador Home.
Configuración de rutas
Abre el fichero application/config/routes.php y cambia el controlador por defecto a Home.
$route['default_controller'] = 'home';
Fuente: codexworld.com