• Publicidad

Upload de Archivos y HTML

Preguntas y comentarios relacionadas con HTML y CSS.

Upload de Archivos y HTML

Notapor Jesusb0 » 2005-11-20 22:35 @983

Hola buenas, queria que me ayudaran si pueden, acabo de leer un manual en http://perlenespanol.com/archives-tut/000082.html para poder subir ficheros a un servidor, osea que cualquier persona que quiera subir un archivo a mi servidor lo pueda hacer buscando su archivo y subiendolo, pero pos me quede en 2 puntos, se html y muy poco php, pero no se nada de perl, en la guia salia que al final quedaria el archivo asi:

#!/usr/bin/perl -w

Eso lo conozco en Linux, pero no en Windows, como puedo hacer?

La segunda parte es como guardo ese archivo para que sea el CGI ?? si me pueden explicar please
THANKS
Jesusb0
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2005-11-20 22:29 @978
Ubicación: Venezuela

Publicidad

Notapor monoswim » 2005-11-21 07:05 @337

Hola, en windows tienes que instalarte el intérprete de perl que lo bajas de activeperl.com y se instala por defoult en

c:/perl/bin/perl.exe

por lo cual la primera línea queda así

#!c:/perl/bin/perl.exe

Ahora bien ese archivo guardalo .pl o .cgi y guardalo en la carpeta cgi-bin de su programa de servidor web...Como el apache o algo así...

Espero que te sirva

Saludos
PD: El .pl o .cgi debe ser en fomato texto, askii
MonoSwim
Perl Programming Language
Avatar de Usuario
monoswim
Perlero nuevo
Perlero nuevo
 
Mensajes: 452
Registrado: 2003-11-18 16:13 @717
Ubicación: Buenos Aires

Notapor Jesusb0 » 2005-11-21 12:46 @574

Hola gracias por tu pronta respuesta, la verdad es que sigo igual, ya tengo creado mi archivo .cgi bien y todo, pero ahora pasa esto:

hice todo tal cual como esta y al momento de cargar me sale este error The requested URL /upload_archivo.cgi was not found on this server.

Si cambio el codigo html en
y le cambio la ruta de upload_archivo.cgi por /cgi-bin/upload_archivo.cgi (que es donde se encuentra el archivo)
me da el error:

No se puedo crear el archivo at C:/Archivos de programa/Apache Group/Apache2/cgi-bin/upload_archivo.cgi line 64. Si me pudiera ayudar le agradeceria mucho

de antemano Thanks
Jesusb0
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2005-11-20 22:29 @978
Ubicación: Venezuela

Notapor explorer39 » 2005-11-21 13:11 @591

Es muy claro el error: No puede escribir el fichero que le indicas en la línea 64 del script.
O no tienes permiso de escritura en el directorio o ya existe el fichero pero no tiene permiso de escritura o existe pero pertenece a otro usuario (distinto del que ejecuta el servidor web) o el camino completo al lugar donde hay que crear el fichero es inalcanzable o se ha llenado el disco.
explorer39
 

Notapor Jesusb0 » 2005-11-21 18:13 @800

a ver compa, me dejastes 10 veces mas enredado que antes jeje, sorry pero no se mucho sobre perl y cgi , voy a ponerles aqui mi codigo cgi para ver si ven algo y el htm sorry por molestar

Codigo CGI:

#!C:\perl\bin\perl.exe -w

########################################################
#
# Código de ejemplo del tutorial: "Upload de archivos"
#
# Creado por: Uriel Lizama
# Todos los derechos reservado.
#
# http://perlenespanol.com/
#
#########################################################

use strict;
use CGI::Carp qw(fatalsToBrowser);
use CGI;

my %Input;

my $query = new CGI;
my @pairs = $query->param;

foreach my $pair(@pairs){
$Input{$pair} = $query->param($pair);
}


#Directorio donde queremos estacionar los archivos
my $dir = "/htdocs/archivos";

#Array con extensiones de archivos que podemos recibir
my @extensiones = ('gif','jpg','jpeg','bmp','png','txt');


recepcion_de_archivo(); #Iniciar la recepcion del archivo

#TODO SALIO BIEN
print "Content-type: text/html\n\n";
print "<h1>El archivo fue recibido correctamente</h1>\n";

exit(1);


sub recepcion_de_archivo{

my $nombre_en_servidor = $Input{'archivo'};
$nombre_en_servidor =~ s/ /_/gi;
$nombre_en_servidor =~ s!^.*(\\|\/)!!;


my $extension_correcta = 0;

foreach (@extensiones){
if($nombre_en_servidor =~ /\.$_$/i){
$extension_correcta = 1;
last;
}
}


if($extension_correcta){

#Abrimos el nuevo archivo
open (OUTFILE, ">$dir/$nombre_en_servidor") || die "No se puedo crear el archivo";
binmode(OUTFILE); #Para no tener problemas en Windows

#Transferimos byte por byte el archivo
while (my $bytesread = read($Input{'archivo'}, my $buffer, 1024)) {
print OUTFILE $buffer;
}

#Cerramos el archivo creado
close (OUTFILE);

}else{
print "Content-type: text/html\n\n";
print "<h1>Extension incorrecta</h1>";
print "Sólo se reciben archivo con extension:";
print join(",", @extensiones);
exit(0);
}


} #sub recepcion_de_archivo

Codigo HTML:

<html>

<head>
<title>Upload de Archivo - Tutorial de "Perl en Español"</title>
</head>

<body bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#800080" alink="#ff0000">

<center>
<form ENCTYPE="multipart/form-data" method="post" action="/cgi-bin/upload_archivo.cgi">
<input type="file" name="archivo" size="50"><input type="submit" value=" Enviar Archivo ">
</form>
</center>

</body>

</html>

Please compas si me pueden ayudar
Thanks
Jesusb0
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2005-11-20 22:29 @978
Ubicación: Venezuela

Notapor kidd » 2005-11-21 19:32 @855

Hola:

Mira, el problema te lo tira porque no está pudiendo crear el archivo en el directorio que pones:

Código: Seleccionar todo
my $dir = "/htdocs/archivos";


Lo que me parece es que tiene que ver por el lugar donde tienes tu CGI, por ejemplo, si tu CGI lo tienes puesto en /htdocs/cgi-bin/upload_archivo.cgi, entonces la variable $dir debería de ser:

Código: Seleccionar todo
my $dir = "../archivos";


Otra cosa que puedes hacer es buscar cual es la ruta absoluta al directorio. Para ello te pido que hagas un CGI llamale env.cgi, ponle el siguiente código:

Código: Seleccionar todo
#!C:\perl\bin\perl.exe -w

use strict;

print "Content-type: text/html\n\n";

  print "$_ = $ENV{$_}<br>\n" foreach keys %ENV;


Súbelo a tu sitio ejecutalo y pon aquí el resultado para poder decirte cual es la ruta absoluta al directorio archivos.


SALUDOS
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor Jesusb0 » 2005-11-22 09:25 @434

buenas amigo, hice el cgi y el resultado es el siguiente:

Código: Seleccionar todo
QUERY_STRING =
SYSTEMROOT = C:\WINDOWS
SERVER_ADDR = 127.0.0.1
HTTP_ACCEPT_LANGUAGE = es-ar,es;q=0.8,en-us;q=0.5,en;q=0.3
SERVER_PROTOCOL = HTTP/1.1
HTTP_CONNECTION = keep-alive
SERVER_SIGNATURE =
Apache/2.0.55 (Win32) Server at localhost Port 80

COMSPEC = C:\WINDOWS\system32\cmd.exe
REMOTE_PORT = 3595
HTTP_USER_AGENT = Mozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.7.12) Gecko/20050919 Firefox/1.0.7
HTTP_ACCEPT = text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
GATEWAY_INTERFACE = CGI/1.1
HTTP_HOST = localhost
SERVER_ADMIN = [email protected]
SERVER_SOFTWARE = Apache/2.0.55 (Win32)
WINDIR = C:\WINDOWS
REMOTE_ADDR = 127.0.0.1
SCRIPT_NAME = /cgi-bin/env.cgi
HTTP_ACCEPT_ENCODING = gzip,deflate
SERVER_NAME = localhost
DOCUMENT_ROOT = C:/Archivos de programa/Apache Group/Apache2/htdocs
REQUEST_URI = /cgi-bin/env.cgi
HTTP_ACCEPT_CHARSET = ISO-8859-1,utf-8;q=0.7,*;q=0.7
REQUEST_METHOD = GET
SCRIPT_FILENAME = C:/Archivos de programa/Apache Group/Apache2/cgi-bin/env.cgi
HTTP_KEEP_ALIVE = 300
PATH = C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
PATHEXT = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
SERVER_PORT = 80
Jesusb0
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2005-11-20 22:29 @978
Ubicación: Venezuela

Notapor kidd » 2005-11-22 18:09 @798

Hola:

Muy bien, con la información que me das te debe de funcionar poniendo el siguiente directorio:

Código: Seleccionar todo
my $dir = "C:/Archivos de programa/Apache Group/Apache2/htdocs/archivos";



SALUDOS
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor Jesusb0 » 2005-11-22 18:43 @822

Uff, muchas gracias compa, todo sirvio 100%, neta que te lo agradesco mucho, me haz salvado, ahora me toca buscar un comando para que me genere directamente la direccion donde se encuentra el archivo para bajarlo.
Lo que estoy haciendo es algo parecido a las paginas de upload como megaupload thanks
Jesusb0
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2005-11-20 22:29 @978
Ubicación: Venezuela

Notapor kidd » 2005-11-22 23:04 @003

Jesusb0 escribiste:Uff, muchas gracias compa, todo sirvio 100%, neta que te lo agradesco mucho, me haz salvado, ahora me toca buscar un comando para que me genere directamente la direccion donde se encuentra el archivo para bajarlo.
Lo que estoy haciendo es algo parecido a las paginas de upload como megaupload thanks


No te preocupes, si necesitas más ayuda avísanos.


SALUDOS
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Siguiente

Volver a HTML

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron