Tengo un pequeño problemita subiendo archivos al server, me tira el error:
Software error:
Malformed multipart POST: data truncated
For help, please send mail to this site's webmaster, giving this error message and the time and date of the error.
Creo que es porque no se forma bien el header, pero la verdad no sé bien cómo funciona el asunto.
Paso el código a ver si tienen alguna idea:
Using html4strict Syntax Highlighting
- <fieldset class="adj">
- <legend><a class="titulo2">Archivos Adjuntos</a></legend>
- <form action="sube_adj.pl" method="post" enctype="multipart/form-data">
- <input class="brow" type="file" onchange="adjunt(this)"/>
- <br /><br />
- <input type="submit" value="adjuntar archivo" />
- </form>
- </fieldset>
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Y el cgi es :
Using perl Syntax Highlighting
- #!/usr/bin/perl -w
- 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 = "/adjuntos";
- #Array con extensiones de archivos que podemos recibir
- my @extensiones = ('gif','jpg','jpeg','bmp','png');
- &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
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
Bueno, gracias de antemano por estar ahí y darnos una mano a los que recién arrancamos con Perl-CGI.
PD: Espero que el código no tenga copyright