martes, 20 de enero de 2015

Subir archivos a un servidor con PHP

El archivo de configuración php.ini contiene directivas para autorizar o desautorizar el envío de archivos por medio de un formulario y también configurarlo:

Las rutas de los archivos que se deben editar son: 

nano /etc/php5/apache2/php.ini 
nano /etc/php5/cgi/php.ini

Los campos a editar son los siguientes:

Configuración de PHP para subir archivos

El archivo de configuración php.ini contiene directivas para autorizar o desautorizar el envío de archivos por medio de un formulario y también configurarlo:


file_uploads= On/Off permite autorizar o desautorizar el envío de archivos.
upload_tmp_dir = directorio permite definir el directorio temporal donde se colocará el archivo cargado.
upload_max_filesize = 2M permite definir el tamaño máximo autorizado del archivo. Si este límite es sobrepasado, el servidor enviará un código de error.
post_max_size indica el tamaño máximo de los datos enviados en un formulario. Esta directiva prima sobre upload_max_filesize, por lo que hay que asegurarse de tener post_max_size supeior a upload_max_filesize
Si no tiene acceso a la configuración (caso de un sitio web alojado en el servidor del proveedor de acceso o en el caso de un alojamiento mutualizado), entonces puede verificar la configuración con la función phpinfo():

<?
  phpinfo();
?>

file_uploads = On ==> le colocamos ON
upload_tmp_dir = /tmp_name ==> le colocamos la ruta y el nombre de la carpeta donde va subir temporalmente el archivo
upload_max_filesize = 2M ==> le colocamos el tamaño maximo del archivo que se quiere subir
post_max_size = 8M ==> se le coloca el tamaño maximo de los datos enviados en un formulario

Creacion de la carpeta tmp_name

cd / 
mkdir tmp_name

Creacion de la carpeta subidas

cd /var/www/subir_archivos
mkdir subidas

Asignacion de todos los permisos para ambas carpetas tmp_name - subidas

chmod -R 777 tmp_name
chmod -R 777 subidas

Codigo del Archivo Subir.html

<html>
<head>
</head>
<body>
<form action="file.php" method="post" enctype="multipart/form-data">
            <input type="file" name="archivo" id="archivo"></input>
            <input type="submit" value="Subir archivo"></input>
        </form>
    <div id="tw">Twitter : @kimberling_149
    </div>
</body>
</html>


Codigo del Archivo file.php

<?php

 /* 
 tmp_name: Es el nombre del fichero temporal donde se ha hecho el upload.
 name: Es el nombre original del fichero, el que le puso el usuario.
 type: El tipo mime del fichero. Por ejemplo si es una imagen jpeg el valor de esta clave será "image/jpeg"
 error: Indica si ha habido algún error durante la subida.
 size: Tamaño del fichero en bytes.
 */

if ($_FILES['archivo']["error"] > 0)
{
  echo "Error: " . $_FILES['archivo']['error'] . "<br>";
  echo "<br>";
  echo "Atencion...!!! hubo un error al subir el archivo $name verifique e intente nuevamente...";
 }
else
  {
  echo "Nombre: " . $_FILES['archivo']['name'] . "<br>";
  echo "Tipo: " . $_FILES['archivo']['type'] . "<br>";
  echo "Tamaño: " . ($_FILES["archivo"]["size"] / 1024) . " kB<br>";
  echo "Carpeta temporal: " . $_FILES['archivo']['tmp_name'];

 /*ahora con la funcion move_uploaded_file lo guardaremos en el destino que queramos*/

  move_uploaded_file($_FILES['archivo']['tmp_name'], "subidas/" . $_FILES['archivo']['name']); 
  echo "<br>";
  echo "Felicitaciones logro subir el archivo $name exitosamente";

 /*subidas es la carpeta que creamos donde se van a guardar los archivos despues que pasan por tmp_name
   subidas puedes cambiarlo al nombre que quieras... 
 */

}

?>

Por ultimo
Se abre un navegador, coloca el nombre del proyecto en este caso subir_archivos y listo 

No hay comentarios:

Publicar un comentario