Foros del Web » Programando para Internet » PHP »

UpLoad Necesito consejo

Estas en el tema de UpLoad Necesito consejo en el foro de PHP en Foros del Web. estoy haciendo un script de uploads, pero no se si es lo mismo hacerlo usando ftp_connect o un simple copy. Es decir ¿hay diferencia al ...
  #1 (permalink)  
Antiguo 25/09/2003, 19:32
 
Fecha de Ingreso: noviembre-2002
Mensajes: 190
Antigüedad: 21 años, 5 meses
Puntos: 0
UpLoad Necesito consejo

estoy haciendo un script de uploads, pero no se si es lo mismo hacerlo usando ftp_connect o un simple copy. Es decir ¿hay diferencia al usar las funcines de ftp para subir archivos? o es lo mismo ?.

Gracias
  #2 (permalink)  
Antiguo 25/09/2003, 19:52
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
yo uso esto... por si no quieres calentarte demasiado...

fichero: classe class.upload.img.inc.php
Código PHP:
<?php

class UpLoad
{
    var 
$archivos_permitidos;    
    var 
$dir;        
    var 
$max_filesize;        
    var 
$idioma;    
    var 
$error 0;
    var 
$file_type;
    var 
$file_name;
    var 
$file_size;
    var 
$archivo;
    var 
$file_path;
    var 
$warning 0;

    function 
UpLoad ($permiso="" $max_file 20000$dir "banner",$idioma "spanish"){
        if ( empty (
$permiso) ) $permiso = array ("image/pjpeg","image/x-png","image/jpeg","image/png","image/gif");
        
$this->archivo_permitido $permiso
        
$this->max_filesize $max_file;
        
$this->dir $dir;
        
$this->idioma $idioma;
    }
    
    function 
putFile ($file){
        
$this->file_type strtok $_FILES[$file]['type'], ";"); 
        
$this->file_name $_FILES[$file]['name']; 
        
$this->file_size $_FILES[$file]['size']; 
        
$this->temp $_FILES[$file]['tmp_name'];  // upload para o diretorio temp
        
        
if(!in_array($this->file_type$this->archivo_permitido))
            
$this->Error(1);
        
        if ( (
$this->file_size <= 0) || ($this->file_size $this->max_filesize) ) $this->Error(2);
        
        if (
$this->error == ""){
            
$filename basename ($this->file_name); 
            if (!empty (
$this->dir) ) 
                
$this->arquivo $this->dir."/".$filename;
            else 
                
$this->arquivo $filename

            if (
file_exists($this->arquivo)){

                
srand((double)microtime()*1000000);
                
$filename rand(0,20000)."_".$filename;

                
$new_letras "";
                
$leng_letras 8;
                for (
$i=1$i<=$leng_letras$i++)
                
                    {

                    
$abcdario chr(rand(97,122));
                    
$new_letras .= $abcdario;
                }
                
                
$filename "copia_".$new_letras."_".$filename;
                
                if (!empty (
$this->dir)) 
                    
$this->arquivo $this->dir."/".$filename;
                else 
                    
$this->arquivo $filename;
            }
            
            if(!
is_uploaded_file($this->temp)) $this->Error(3);
            if(!@
move_uploaded_file($this->temp,$this->arquivo) ) $this->Error(4);
            
            return 
$this->arquivo;
        }
        else {
            return 
false;
        }

    }

    function 
Error($op){
        if(
$this->idioma="spanish"){
            switch (
$op){
                case 
0: return; break;
                case 
1$this->error "Error 1: Error tipo de archivo no permitido, jpg , gif , png: $this->file_type."; break;
                case 
2$this->error "Error 2: Error en el tamaño de fichero: $this->file_size Kb. Tamaño Maximo $this->max_filesize."; break;
                case 
3$this->error "Error 3: Error de transferencia de datos: $this->file_name."; break;
                case 
4$this->error "Error 4: Error cuando se copia el fichero al directorio temporal $this->temp para $this->file_name."; break;
                case 
5$this->error "Error 5: Error gd.dll, no esta instalada"; break;
            }
        }

           
?> <SCRIPT> alert("<?= $this->error?>"); </SCRIPT>

            <script languaje="javascript">
                setTimeout ("history.back()", 1);
            </script>

            <?php
       
exit;
    }
}
?>
fin classe class.upload.img.inc.php

funcion de upload


Código PHP:
<?
include_once("class.upload.img.inc.php");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.testo {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 10px;
}
.titulo {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 12px;
    font-weight: bolder;
    color:#FFFFFF;
}
.eu {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 11px;
}

-->
</style>
</head>

<body>
<table align="CENTER" width="500" border="0">
  <tr> 
    <td bgcolor="000099" colspan="2"><div align="center" class="titulo">Sube Tu Imagen / Banner</div></td>
  </tr>
  
  <tr>
    <td height="10" colspan="2">
<div align="left" class="eu">
</CENTER>
    </td>
  </tr>
  <tr> 
    <td height="10" colspan="2"><div align="center">
    <?php 
    
if ( $send == "ok" && $_FILES[userfile]['name'] ){    
        
        
$upload = new upload();
        
        if (
$upload -> putFile ("userfile")) {
            print 
"<div class=\"testo\"><br>El fichero subio correctamente.<br>";
            print 
"Nombre de fichero: ";
            print 
$upload->file_name;
            print 
"<br>Carpeta: ";
            print 
$upload->dir;
            print 
"<br><br></div>";
        }
    }
    
    
?>
      </div></td>
  </tr>
  <form action="<?php $PHP_SELF?>" method="post" enctype="multipart/form-data"> <tr>
    <td colspan="2">
        <p align="center"> 
          <input name="userfile" type="file" class="testo">
        </p>
      </td>
  </tr>
  <tr> 
    <td colspan="2"> <p align="center"> 
        <input name="Submit" type="submit" value="Subir Fichero" class="testo">
        <input name="send" type="hidden" value="ok">
      </p></td>
  </tr></form>
</table>
</body>
</html>
__________________
3w.valenciadjs.com
3w.laislatv.com

Última edición por nuevo; 25/09/2003 a las 19:57
  #3 (permalink)  
Antiguo 25/09/2003, 20:06
 
Fecha de Ingreso: noviembre-2002
Mensajes: 190
Antigüedad: 21 años, 5 meses
Puntos: 0
gracias, ¿con este scriipt y una conxión de 56 kb tiene idea de el tamaño máximo que se puede subir? ya que tengo otras scripts de uploads y no logros subir archivos mayores a 600 kb sin que salte error.

saludos!
  #4 (permalink)  
Antiguo 25/09/2003, 22:32
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
eso sera por la configuracion de php.ini o el tiempo maximo en que se puede ejecutar un script en php... todo eso esta en la configuracion de php.ini y puede ser que impida que subas cosas mayores de 600k o de un time.max

en mi ejemplo como ves son 2000, eso son 20k

quieres 2 megas, pon 200000
__________________
3w.valenciadjs.com
3w.laislatv.com
  #5 (permalink)  
Antiguo 25/09/2003, 22:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
El sistema de Upload que te ha pasado "nuevo" .. el "upload" se hace vía HTTP y es controlado por PHP.

Las limitaciones del tamaño de archivo las determinan unas cuantas directivas de tu php.ini ...

algunas son:
max_upload_size
post_nomeacuerdo ..

Etc .. (usa el buscador del foro .. no hace mucho josemi comentó el tema en concreto ..)

Podrías hacer el "upload" si lo deseas vía FTP .. pero tambien PHP controla bajo sus directivas de su php.ini los tamaños máximos de los datos que puedes enviar ..

Los Uploads vía FTP se usan más frecuentemente si el destino de esos archivos NO es el mismo servidor que donde corres tus páginas PHP .. (aunque por FTP .. si tienes control de las cuentas que dispones en dicho servidor FTP se ajusta más fácil el tema de "quotas" y transferencias ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 06:46.