我想上傳一個文件使用mojolicious,然後在一些改變後,我想下載相同的文件。文件上傳部分是好的,但我不確定如何處理下載文件的路由。在mojolicious處理錨標記
Controller
:
sub upload{
my $self=shift;
my $upload=$self->param('fileName');
my $file_name=$upload->filename;
$self->render(file=>"$file_name",
filepath=>$filepath
);
}
我有這個模板upload.html.ep
。
<body>
Successfully uploaded file: <%=$file%><br/>
<a href="download/<%= $filepath %>" class="button">
Download!
</a>
現在a href
在這裏產生的a href=download/file/path/foo.txt
。如何處理此路徑的路線?作爲
my $r = $self->routes;
# Normal route to controller
$r->get('/')->to('example#welcome');
$r->post('/upload')->to('example#upload'); #working well
$r->get('/download/:file')->to('example#download'); # not working
我得到錯誤:
None of these routes could generate a response for your GET request for
/download/file/path/foo.txt.
我想佔位這種方式工作。
如果'$ filepath'包含斜槓'/'路由會感到困惑,因爲它需要一個參數。嘗試使用_filename_而沒有完整的路徑(你不應該公開那個)。它應該看起來像'http:// example.org/download/myfile.txt',其中'myfile.txt'是_filename_。比較路由'/ product /:id/details',其中'$ id'也不允許有斜線,因爲這會使路由匹配中斷。 (這是一個錯誤的猜測,因爲我對Mojo不夠熟悉,但是如果它工作的話,我會把它寫成答案。) – simbabque