0

ファイルをアップロードするために「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>

サイト.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'; }

4

1 に答える 1

0

Site.pm の uploadFile メソッドは、次のような行で終了する必要があります。

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

...アップロード処理アクションを呼び出した後、ブラウザは元のページに戻り、必要に応じてプロセスを繰り返すようにします。現時点では、uploadFile アクションには次に何をすべきかについての指示はありません。

'your-upload-page-location' は明らかに、最初にフォームをレンダリングしたアクションです。

それが役立つことを願っています。

于 2013-01-10T23:10:55.393 に答える