使用Ajax和cakephp上传文件

时间:2010-06-29 14:13:05

标签: cakephp

我已经建立了一个可以让用户上传文件的cakephp网站,一切正常,但我想在上传时显示一个图片说“文件上传”或其他内容。现在我知道我应该使用$ ajax->表单助手,但我似乎无法让它工作。有人可以指出我正确的方向吗

<?php echo $ajax->form(array('type' => 'post',
    'options' => array(
        'model'=>'Upload',
        'update'=>'post2',
        'action' => 'add',
        'confirm' => 'Are you sure?',
        'indicator' => 'loading',
        'before' => '$("#post2").html("Wait a moment")'

    )
)); 
 ?>

    <fieldset>
        <legend><?php __('Add Upload');?></legend>

    <?php echo $form->input('title'); ?>

    <div id="formUpdate">

</div>

    <?php echo $form->input('Uploaded.uploaded_file', array('type' => 'file', 'label' => 'Upload file')); ?>


    </fieldset>
<?php echo $form->end('Submit');?>
</div>

    <div id="post2"></div>

1 个答案:

答案 0 :(得分:0)

好的,如果您不想使用Ajax上传解决方案,那么可以通过简单的javascript实现。我会解释如何处理jQuery,但你也可以用任何库或纯javascript来实现。

因此,创建一个隐藏的div,其中包含您的等待消息,即:

<div id="wait">File is uploading please wait</div>

然后在表单的提交按钮上附加以下功能:

function pleaseWait(){
  $('#your_form_id').hide();
  $('#wait').show();
}

这基本上会隐藏表单并显示等待容器。文件上传后,页面将被重定向,因此您无需担心如何再次显示该表单。

我已经在我的项目中做到了,而且效果很好。