Foros del Web » Programando para Internet » PHP »

Un pequeño Script para subir ficheros

Estas en el tema de Un pequeño Script para subir ficheros en el foro de PHP en Foros del Web. Con este script podeis ver como se pueden subir ficheros en un servidor mediante un formulario usando POST. El Script no comprueba permisos de ficheros ...
  #1 (permalink)  
Antiguo 28/03/2003, 16:51
 
Fecha de Ingreso: marzo-2003
Mensajes: 5
Antigüedad: 14 años, 8 meses
Puntos: 0
Un pequeño Script para subir ficheros

Con este script podeis ver como se pueden subir ficheros en un servidor mediante un formulario usando POST.

El Script no comprueba permisos de ficheros ni nada, sólo es un pequeña muestra de como se pueden hacer ese tipo de historias con PHP.

Todos los ficheros subidos al servidor se copian al directorio "./descargas/".

Además, también utiliza las nuevas características de 'File Upload' de PHP disponibles a partir de la versión 4.2.0


<?php
//////////////////////////////////////////////////////////
//
// Prueba de Subida de Ficheros al servidor
//
//////////////////////////////////////////////////////////

function mostrar_form_fichero ()
{
echo ("
<form action=\"" . $_SERVER["PHP_SELF"] . "\" enctype=\"multipart/form-data\" method=\"POST\">
<input type=\"hidden\" name=\"op\" value=\"enviar\">
<label>Nombre del Fichero para Subir</label>
<input type=\"file\" name=\"fichero\" size=\"30\">
<input type=\"submit\" value=\"Subir\">
</form>
");
}

//
// Obtiene los ficheros de un directorio
// lo devuelve en un array ordenados
//
function dame_dir ($path)
{
$d = opendir($path);
while ($file = readdir ($d)) {
if ($file != ".." && $file != ".") {
$directorio[] = $file;
}
}
sort ($directorio);
reset ($directorio);
return $directorio;
}

function mostrar_dir ($path)
{
$directorio = dame_dir ($path);
while (list ($pos, $file) = each ($directorio))
{
echo (":: $file ::<br>");
}
}

$operacion = $_POST["op"];
switch ($operacion)
{
case "enviar":
if (is_uploaded_file($_FILES['fichero']['tmp_name'])) {
echo "Nombre Temporal del Fichero en el servidor : " . $_FILES['fichero']['tmp_name'] . "<br>";
$nombreFinal = basename ($_FILES["fichero"]["name"]);
$rutaFinal = "./descargas/$nombreFinal";
copy($_FILES['fichero']['tmp_name'], $rutaFinal);
echo "Fichero " . $nombreFinal . " copiado correctamente en " . $rutaFinal . "<br>";
} else {
echo "Posiblemente el fichero no se pudo enviar correctamente: " . $_FILES['fichero']['name'] . "<br>";
}
break;

default:
mostrar_dir ("./descargas");
mostrar_form_fichero ();
break;
}


?>

Última edición por alidhaey; 28/03/2003 a las 17:08
  #2 (permalink)  
Antiguo 28/03/2003, 20:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
m el array $_FILES si no me equivoco está disponible desde PHP 4.1.x .. el resto de funciones como la de is_uploaded_file() no sé (no he mirado el man xD) ..

Bueno, el caso que podrías ponerlo en las FAQ's de este foro .. Usa el boton "PHP" (previo seleccionado tu código) para que se vea "potito" el código .. ;)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 29/03/2003, 08:41
 
Fecha de Ingreso: marzo-2003
Mensajes: 5
Antigüedad: 14 años, 8 meses
Puntos: 0
Nota sobre las caracteristicas del FILE_UPLOAD

Concretamente, el array $_FILES[] que contiene la información de un fichero que es subido por HTTP está disponible desde la versión 4.1.0

Existe otro array, desde la version 4.0.0. llamado $HTTP_POST_FILES que hace la misma función, pero se recomienda la utilización de $_FILES.

Todo eso se puede encontrar en el manual, seccion de 'Features' -> 'Handling File Uploads'.

Última edición por alidhaey; 29/03/2003 a las 08:47
  #4 (permalink)  
Antiguo 29/03/2003, 12:34
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 15 años, 10 meses
Puntos: 2
estaria bueno que cuando agregues un scripts...para compartir uses el boton PHP para colorear codigo y acomodar para una visualizacion mas rapida....de los otros usuarios
Código PHP:
<?php 
// ////////////////////////////////////////////////////////

// Prueba de Subida de Ficheros al servidor

// ////////////////////////////////////////////////////////
function mostrar_form_fichero ()
{
    echo (
"
<form action=\"" 
$_SERVER["PHP_SELF"] . "\" enctype=\"multipart/form-data\" method=\"POST\">
<input type=\"hidden\" name=\"op\" value=\"enviar\">
<label>Nombre del Fichero para Subir</label>
<input type=\"file\" name=\"fichero\" size=\"30\">
<input type=\"submit\" value=\"Subir\">
</form>
"
);


// Obtiene los ficheros de un directorio
// lo devuelve en un array ordenados

function dame_dir ($path)
{
    
$d opendir($path);
    while (
$file readdir ($d)) {
        if (
$file != ".." && $file != ".") {
            
$directorio[] = $file;
        } 
    } 
    
sort ($directorio);
    
reset ($directorio);
    return 
$directorio;

function 
mostrar_dir ($path)
{
    
$directorio dame_dir ($path);
    while (list (
$pos$file) = each ($directorio)) {
        echo (
":: $file ::<br>");
    } 

$operacion $_POST["op"];
switch (
$operacion) {
    case 
"enviar":
        if (
is_uploaded_file($_FILES['fichero']['tmp_name'])) {
            echo 
"Nombre Temporal del Fichero en el servidor : " $_FILES['fichero']['tmp_name'] . "<br>";
            
$nombreFinal basename ($_FILES["fichero"]["name"]);
            
$rutaFinal "./descargas/$nombreFinal";
            
copy($_FILES['fichero']['tmp_name'], $rutaFinal);
            echo 
"Fichero " $nombreFinal " copiado correctamente en " $rutaFinal "<br>";
        } else {
            echo 
"Posiblemente el fichero no se pudo enviar correctamente: " $_FILES['fichero']['name'] . "<br>";
        } 
        break;
    default:
        
mostrar_dir ("./descargas");
        
mostrar_form_fichero ();
        break;


?>
  #5 (permalink)  
Antiguo 30/03/2003, 06:57
androide
Invitado
 
Mensajes: n/a
Puntos:
if(( ==tú) && (envidia==tú) && (egoismo==tú) && (:-p==tú) && (yo_que_se==tú))

{echo" ...";}

else

{echo" ";}



Muy bueno tu code ... , espero que sigas frecuentando este foro ... si tienes ese nivel de desarrollo, [pues por lo que veo ese code es integramente tuyo, ¿o me equivoco?] serías junto con otros miembros de FDW ... [ hi boys !] una grandiosa ayuda de aprendizaje ... claro ... si voz lo querés ...

De cumplirse ya entiendo por que nuestro preciado planeta y nuestra corta existencia corre el riesgo de perder su equilibrio natural, por causa de unos pocos individuos que dejan llevar sus mentes por el egoismo, la envidia, en fin tantas cosas que sólo conllevan a su propia aniquilación ....

La búsqueda de la verdad, estrecho y arduo camino ... ... ... ...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:37.