После загрузки файла и последующей отправки с помощью катализатора управление переходом на новую страницу. Как предотвратить это

Я написал fileUpload.tt и Site.pm для загрузки файла (вставлен ниже). Его файл загружается в каталог '/ tmp', но проблема в том, что после загрузки файла он переходит на пустой экран с URL-адресом (XXX / MySite / uploadFile). Я хочу, чтобы он отображался на том же экране и позволял загружать другой файл. Я попытался дать "onsubmit =" return false; "в, тогда он даже не загружал файл. Пожалуйста, дайте мне знать, как это сделать ..

fileUpload.tt:

<form action="/MySite/uploadFile" method="post" enctype="multipart/form-data">
    <input type="hidden" name="form_submit" value="yes">
    <input type="file" name="my_file">
    <input type="submit" value="Send">
</form>

Site.pm:

sub uploadFile :Local :Args(0){
    my ( $self, $c ) = @_;

    if ( $c->request->parameters->{form_submit} eq 'yes' ) {
        if ( my $upload = $c->request->upload('my_file') ) {
            my $basename = $upload->basename;
            my $target   = "/tmp/$basename";
            $upload->copy_to($target) )
        }
    }

$ c-> stash -> {'template'} = 'fileUpload.tt'; }


person user1967109    schedule 10.01.2013    source источник


Ответы (1)


Ваш метод uploadFile в Site.pm должен заканчиваться строкой вроде:

$c->res->redirect($c->uri_for('/your-upload-page-location'));

... чтобы после вызова действия обработки загрузки браузер возвращался на исходную страницу, чтобы при необходимости повторить процесс. На данный момент у действия uploadFile нет инструкции, что делать дальше.

'your-upload-page-location' - это, очевидно, действие, которое в первую очередь визуализировало форму.

Надеюсь, это поможет.

person RET    schedule 10.01.2013
comment
Пожалуйста. Возможно, вы захотите проголосовать за ответ и / или отметить его как решение. - person RET; 15.01.2013