Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Otros Temas » HTML » Upload de Archivos y HTML Responder al tema
Nuevo tema


Página 1 de 1  [ 12 mensajes ] 
 
Nota 2005-11-20 22:35 @983

Perlero Nuevo
Registrado: 2005-11-20 22:29 @978
Ubicación: Venezuela
Mensajes: 5
Upload de Archivos y HTML
Hola buenas, queria que me ayudaran si pueden, acabo de leer un manual en http://perlenespanol.baboonsoftware.com ... 00082.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


Nota 2005-11-21 07:05 @337
Avatar de Usuario
Vive para Perl en Español
Registrado: 2003-11-18 16:13 @717
Ubicación: Buenos Aires
Mensajes: 455
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


Nota 2005-11-21 12:46 @574

Perlero Nuevo
Registrado: 2005-11-20 22:29 @978
Ubicación: Venezuela
Mensajes: 5
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


Nota 2005-11-21 18:13 @800

Perlero Nuevo
Registrado: 2005-11-20 22:29 @978
Ubicación: Venezuela
Mensajes: 5
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.baboonsoftware.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


Nota 2005-11-21 19:32 @855
Avatar de Usuario
Creador de Perl en Español
Registrado: 2003-10-15 16:52 @744
Ubicación: México
Mensajes: 1163
Hola:

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

Código:
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:
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:
#!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


Nota 2005-11-22 09:25 @434

Perlero Nuevo
Registrado: 2005-11-20 22:29 @978
Ubicación: Venezuela
Mensajes: 5
buenas amigo, hice el cgi y el resultado es el siguiente:

Código:
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 = jesusb0@detodobien.tk
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


Nota 2005-11-22 18:09 @798
Avatar de Usuario
Creador de Perl en Español
Registrado: 2003-10-15 16:52 @744
Ubicación: México
Mensajes: 1163
Hola:

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

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



SALUDOS

_________________
Uriel Lizama Perl programmer fundador de Perl en Español


Nota 2005-11-22 18:43 @822

Perlero Nuevo
Registrado: 2005-11-20 22:29 @978
Ubicación: Venezuela
Mensajes: 5
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


Nota 2005-11-22 23:04 @003
Avatar de Usuario
Creador de Perl en Español
Registrado: 2003-10-15 16:52 @744
Ubicación: México
Mensajes: 1163
Jesusb0 escribió:
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


Nota 2005-11-30 09:43 @447
Avatar de Usuario
Perlero Nuevo
Registrado: 2004-12-09 07:32 @355
Ubicación: españa
Mensajes: 78
seguridad
Hola.
Ahora que te funciona, te recomiendo que añadas un par de comprovaciones paga ganar seguridad en tu cgi.

no cuesta nada comprovar que el tipo de archivo que suben es el que tu quieres y no algun archivo que se pueda ejecutar (cgi, php...)

Tambien te recomiendo que mires la configuracion del apache para limitar el tipo de archivos que pueden ejecutarse y el direcctorio en el que lo pueden hacer (limirarlo solo al directorio cgi-bin. por ejemplo)

Un saludo.

_________________
MACGREGOR [TM]


Nota 2008-05-09 11:20 @514

Perlero Nuevo
Registrado: 2008-05-09 11:16 @511
Mensajes: 1
Buenas.

Necesito un upload en mi web.

Ya tengo los códigos pero cuando voy a subir archivos me pone error y me pide un archivo llamado upload.asp.

Ayudaaaa plis


Nota 2008-05-09 13:09 @589
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10272
Bienvenido a los foros de Perl en Español, Razor.

No creo que upload.asp tenga algo que ver con Perl, pero bueno...

Lo más seguro es que tengas que hablar con el administrador de tu sitio web para saber qué sistemas de uploads puedes usar en tu sitio. O usar alguno de fábrica que ellos te den. O usar un cgi ya prefabricado, que parece que es lo que estás usando.

Lo que no nos dices es qué códigos estás usando. Y así es difícil dar pistas.

Puedes usar el sistema de búsqueda de este foro. Por ejemplo, buscando por 'upload' aparece un ejemplo sencillo con el módulo CGI:
http://perlenespanol.baboonsoftware.com ... php?t=1197

Y en la sección Tutoriales, hay uno llamado, precisamente, Upload de archivos.

_________________
JF^D Perl programming


Responder al tema  [ 12 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO