2012-04-14 25 views
10

He estado probando el framework web Mojolicious basado en perl. Y he intentado desarrollar una aplicación completa en lugar de Lite. El problema que estoy enfrentando es que estoy tratando de subir archivos al servidor, pero el siguiente código no funciona.¿Cómo cargar el archivo usando Mojolicious?

Por favor, guíame qué le pasa. Además, si el archivo se carga, entonces está en la carpeta pública de la aplicación o en otro lugar.

Gracias de antemano.

sub posted { 
my $self = shift; 
my $logger = $self->app->log; 

my $filetype = $self->req->param('filetype'); 
my $fileuploaded = $self->req->upload('upload'); 

$logger->debug("filetype: $filetype"); 
$logger->debug("upload: $fileuploaded"); 

return $self->render(message => 'File is not available.') 
    unless ($fileuploaded); 

return $self->render(message => 'File is too big.', status => 200) 
    if $self->req->is_limit_exceeded; 

# Render template "example/posted.html.ep" with message 
$self->render(message => 'Stuff Uploaded in this website.'); 
} 
+0

hago ver que en la documentación Mojolicious :: Lite la llamada a '$ self-> REQ-> Cargar()' es envuelto en un 'if()', lo que significa que su valor de retorno se está verificando antes de asumir que hubo una carga. Hacer eso es el equivalente a verificar el valor de retorno de abrir, supongo. – DavidO

Respuesta

8

(Primero, es necesario algún tipo HTML con method="post" y enctype="multipart/form-data", y una input type="file" con name="upload". Sólo para estar seguro.)

Si no hubo errores, $fileuploaded habría una Mojo::Upload. Luego puede verificar su tamaño, sus encabezados, puede sorber o moverlo, con $fileuploaded->move_to('path/file.ext').

Tomado de strange example.

+0

Gracias menozero, la parte HTML es la misma que usted ha mencionado. Y he revisado el enlace proporcionado, pero se está desarrollando en base a Mojolicious :: Lite y la aplicación completa. Y en mi caso '$ fileuploaded' tiene un valor vacío, así que no estoy muy seguro de lo que está fallando actualmente. –

+0

Funciona perfectamente bien para mí. Muchas gracias menozero! Esto debería ser aceptado como la solución de Kunal Jha. El problema de él está en otro lugar ... –

+0

¿Qué biblioteca debo consultar para descargar los archivos? – user1876508

0

Puede utilizar Mojolicious :: Plugin :: RenderFile

Mojolicious::Plugin::RenderFile

+3

De acuerdo con la documentación que vinculó, RenderFile es para descargas en tiempo real, no cargas. –

Cuestiones relacionadas