Archivo de Marzo de 2009

FTP Upload con PHP

Martes, 3 de Marzo de 2009

Hoy les presentamos una guía de como implementar Upload de archivos por FTP utilizando PHP. Para ello nos hemos guiado de FTP Upload via cURL en donde esta muy bien explicado.

Creando el Formulario
Lo primero es crear un formulario en donde seleccionaremos el archivo a subir, esto de la siguiente forma:

  1. <form action=“” method=“post” enctype=“multipart/form-data”>
  2. Seleccionar archivo:
  3. <input type=“file” name=“archivo” />
  4. <input type=“submit” name=“enviar” value=“Upload” />
  5. <input type=“hidden” name=“action” value=“upload” />
  6. </form>

Creando el Script
El siguiente paso es crear el php que se encargue de subir el archivo, primero verificamos que se haya seleccionado el archivo, luego creamos una variable cURLla cual asignamos con los valores que deseamos enviar y finalmente verificamos que se haya subido correctamente el archivo.

  1. $rpta = “”;
  2. if ($_POST["action"] == “upload”) {
  3. $tmpfile = $_FILES['archivo']['tmp_name'];
  4. $tmpname = $_FILES['archivo']['name'];
  5. $ftpuser = “usuario”;
  6. $ftppass = “password”;
  7. $ftppath = “ftp.dominio.com/path/”;
  8. $ftpurl = “ftp://”.$ftpuser.“:”.$ftppass.“@”.$ftppath;
  9. if ($tmpname != “”) {
  10. $fp = fopen($tmpfile‘r’);
  11. $ch = curl_init();
  12. curl_setopt($ch, CURLOPT_URL, $ftpurl.$tmpname);
  13. curl_setopt($ch, CURLOPT_UPLOAD, 1);
  14. curl_setopt($ch, CURLOPT_INFILE, $fp);
  15. curl_setopt($ch, CURLOPT_INFILESIZE, filesize($tmpfile));
  16. curl_exec($ch);
  17. $error = curl_errno($ch);
  18. curl_close ($ch);
  19. if ($error == 0) {
  20. $rpta = ‘Archivo subido correctamente.’;
  21. } else {
  22. $rpta = ‘Error al subir el archivo.’;
  23. }
  24. } else {
  25. $rpta = ‘Seleccionar un archivo.’;
  26. }
  27. }

Crear archivos ZIP con PHP

Martes, 3 de Marzo de 2009

Descargando la clase zipfile

Lo primero es descargar la clase zipfile desde zipfile.inc.txt y renombrarla azipfile.php. Esta clase tiene dos metodos add_dir() y add_file() que permite agregar una carpeta o un archivo al zip que se esta creando.

Creando nuestro primer ZIP

Lo primero es incluir el archivo recién descargado, luego de ello creamos una instancia de la clase, para este ejemplo a la instancia lo llamamos $zipfile. Luego de ello agregamos un archivo de la siguiente forma.

  1. require (“zipfile.php”);
  2. $zipfile = new zipfile();
  3. $zipfile->add_file(implode(“”,file(“img01.jpg”))“foto.jpg”);

Nótese que estamos agregando un archivo llamado img01.jpg y al momento de incluirlo en el zip lo estamos renombrando a foto.jpg. Hasta este punto hemos creado un archivo zip, el siguiente paso es enviarlo al cliente, para ello agregamos headers indicando el tipo de archivo y finalmente imprimimos el archivo:

  1. require (“zipfile.php”);
  2. $zipfile = new zipfile();
  3. $zipfile->add_file(implode(“”,file(“img01.jpg”))“foto.jpg”);
  4. header(“Content-type: application/octet-stream”);
  5. header(“Content-disposition: attachment; filename=zipfile.zip”);
  6. echo $zipfile->file();

El resultado del ejemplo lo pueden ver en http://samples.unijimpe.net/php-zip/.

Agregando carpetas al ZIP
En el caso que agregamos varios archivos y deseamos agruparlas en una carpeta, podemos utilizar el metodo add_folder. Luego de ello agregamos los archivos a la carpeta de la siguiente forma:

  1. require (“zipfile.php”);
  2. $zipfile = new zipfile();
  3. $zipfile->add_dir(“img/”);
  4. $zipfile->add_file(implode(“”,file(“img01.jpg”))“img/01.jpg”);
  5. $zipfile->add_file(implode(“”,file(“img02.jpg”))“img/02.jpg”);
  6. $zipfile->add_file(implode(“”,file(“img03.jpg”))“img/03.jpg”);
  7. header(“Content-type: application/octet-stream”);
  8. header(“Content-disposition: attachment; filename=fotos.zip”);
  9. echo $zipfile->file();