Foros del Web » Programación para mayores de 30 ;) » Programación General »

Problemas subiendo archivos

Estas en el tema de Problemas subiendo archivos en el foro de Programación General en Foros del Web. Hola a todos, les platico que tengo varios años usando perl y en particular varios años usando las mismas rutinas para subir archivos sin problemas. ...
  #1 (permalink)  
Antiguo 15/11/2010, 22:32
Avatar de Saga  
Fecha de Ingreso: febrero-2002
Ubicación: Monterrey
Mensajes: 32
Antigüedad: 22 años, 2 meses
Puntos: 0
Problemas subiendo archivos

Hola a todos, les platico que tengo varios años usando perl y en particular varios años usando las mismas rutinas para subir archivos sin problemas. Pero ahora tengo un problema con el código que siempre había funcionado bien.

Actualmente uso instalaciones locales (en mi laptop) de Apache+MySQL+ActivePerl sobre Windows para trabajar off-line y subirlas a algún servidor posteriormente, pero desde hace casi un año que trabajo con Windows 7, las rutinas de subir archivos dejaron de funcionar, solo sube archivos con cero bytes y no genera ningún error incluso en los logs de apache.

Lo más extraño es que el mismo código si lo muevo a un servidor Linux o Windows Server (con apache, MySQL y Perl) funciona sin problemas. He buscado una y otra vez alguien que haya tenido el mismo problema y nada, he probado en diferentes equipos, reinstalando todo y sigue la misma constante, espero alguien me pueda ayudar.

Les anexo como referencia el código que utilizo, pero no creo que sea el código, supongo que debe ser algún problema de configuración, las versiones que tengo instaladas son las siguientes.

  • Windows 7 x64
  • Apache 2.2.15
  • Active Perl 5.10.1 x64

Código:
# ------------------------------------------------------------
sub uploadFileB {
	my ($sourceFile, $fileName, $dirUpload) = @_;

    my $query = new CGI;
	my $upload_filehandle = $query->upload($sourceFile);
	open ( UPLOADFILE, ">$dirUpload/$fileName" ) or die "$!";
	binmode UPLOADFILE;

	while ( <$upload_filehandle> ) {
		print UPLOADFILE;
	}

	close UPLOADFILE;
}
# ------------------------------------------------------------
sub uploadFile {
    my ($sourceFile, $fileName, $dirUpload) = @_;
    if ($sourceFile eq '') {return;}

    $sourceFile =~ s/ /_/gi;
    $sourceFile =~ s!^.*(\\|\/)!!;

    open (OUTFILE, ">$dirUpload/$fileName") || die "No es posible crear el archivo";
    binmode(OUTFILE);
    while (my $bytesread = read($sourceFile, my $buffer, 1024)) {
            print OUTFILE $buffer;
    }
    close (OUTFILE);
}
# ------------------------------------------------------------
  #2 (permalink)  
Antiguo 16/11/2010, 03:53
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 524
Antigüedad: 18 años
Puntos: 11
Respuesta: Problemas subiendo archivos

Podría ser un problema con el cortafuegos de Windows 7, que por defecto evita la formación de servidores en la propia máquina:

http://www.ghisler.ch/board/viewtopic.php?t=22175

depende además si estás usando el modo pasivo o no, del ftp, porque también debes tener en cuenta el puerto de ftp-data (además del puerto de ftp).
__________________
JF^D Perl Programming en Español
  #3 (permalink)  
Antiguo 16/11/2010, 11:10
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 3 meses
Puntos: 7
Respuesta: Problemas subiendo archivos

Puede ser que estes guardando en el disco c: y este necesite permisos más altos de los que estas usando.

Porque no pruebas a ver si sube primero haciendo:

Código PHP:
sub uploadFileB {
    
my ($sourceFile$fileName$dirUpload) = @_;

    
my $query = new CGI;
    
my $upload_filehandle $query->upload($sourceFile);
    
#open ( UPLOADFILE, ">$dirUpload/$fileName" ) or die "$!";
    #binmode UPLOADFILE;

    
while ( <$upload_filehandle> ) {
        print; 
# UPLOADFILE;
    
}

    
#close UPLOADFILE;

Usá alguno de texto chico.

Al descriptor $upload_filehandle no tenes que cerrarlo para que borre un archivo temporal que usa/ba?
  #4 (permalink)  
Antiguo 16/11/2010, 11:21
Avatar de Saga  
Fecha de Ingreso: febrero-2002
Ubicación: Monterrey
Mensajes: 32
Antigüedad: 22 años, 2 meses
Puntos: 0
Respuesta: Problemas subiendo archivos

Cita:
Iniciado por jferrero Ver Mensaje
Podría ser un problema con el cortafuegos de Windows 7, que por defecto evita la formación de servidores en la propia máquina:

Que tal jferrero, actualmente tengo deshabilitado el cortafuegos de w7, en su lugar uso KIS (Kaspersky Internet Security) y este reemplaza el cortafuegos de windows, revise en la configuración del KIS y tanto el apache como el interprete de perl tienen todos los permisos.
  #5 (permalink)  
Antiguo 16/11/2010, 11:27
Avatar de Saga  
Fecha de Ingreso: febrero-2002
Ubicación: Monterrey
Mensajes: 32
Antigüedad: 22 años, 2 meses
Puntos: 0
Respuesta: Problemas subiendo archivos

Cita:
Iniciado por abcdefghi Ver Mensaje
Puede ser que estes guardando en el disco c: y este necesite permisos más altos de los que estas usando.

Porque no pruebas a ver si sube primero haciendo:

Código PHP:
sub uploadFileB {
    
my ($sourceFile$fileName$dirUpload) = @_;

    
my $query = new CGI;
    
my $upload_filehandle $query->upload($sourceFile);
    
#open ( UPLOADFILE, ">$dirUpload/$fileName" ) or die "$!";
    #binmode UPLOADFILE;

    
while ( <$upload_filehandle> ) {
        print; 
# UPLOADFILE;
    
}

    
#close UPLOADFILE;

Usá alguno de texto chico.
Gracias abcdefghi, ya hice la prueba como me indicas subiendo un txt y al parecer nunca entra en el ciclo while, me confunde un poco esto, entonces no puede abrir el archivo fuente ? o no puede leerlo simplemente ?


Cita:
Iniciado por abcdefghi Ver Mensaje
Al descriptor $upload_filehandle no tenes que cerrarlo para que borre un archivo temporal que usa/ba?
Cierto, muy cierto, jeje
  #6 (permalink)  
Antiguo 16/11/2010, 20:19
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 3 meses
Puntos: 7
Respuesta: Problemas subiendo archivos

Descartemos que sea la librería:

Código PHP:
sub uploadFileB {
    
my ($sourceFile$fileName$dirUpload) = @_;

     if (
tell(STDIN)) {
        print 
"algo lo leyo antes\n";
        exit;
     }
     
      
read(STDIN,$_,$ENV{'CONTENT_LENGTH'});
     print;

    
#my $query = new CGI;
    #my $upload_filehandle = $query->upload($sourceFile);
    #open ( UPLOADFILE, ">$dirUpload/$fileName" ) or die "$!";
    #binmode UPLOADFILE;

    #while ( <$upload_filehandle> ) {
    #   print; # UPLOADFILE;
    #}

    #close UPLOADFILE;

Como sabes que tenes bien los permisos de apache, si arranca como servicio tenés que chequearlo ahí? estas trabajando en el disco c:?
  #7 (permalink)  
Antiguo 24/11/2010, 15:42
Avatar de Saga  
Fecha de Ingreso: febrero-2002
Ubicación: Monterrey
Mensajes: 32
Antigüedad: 22 años, 2 meses
Puntos: 0
Respuesta: Problemas subiendo archivos

Hola a todos, antes que nada les quiero agradecer por las respuestas en este tema, y pedir una disculpa pues ya no tuve tiempo de seguir revisandolo.

Finalmente por razones de tiempo tuvimos que cambiar algunas cosas del diseño del sistema y darle la vuelta a este problema, para poder entregar en tiempo y me dedique de lleno a eso.

Saludos.
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 02:40.