CI上传文件演示不起作用?

时间:2016-03-19 11:58:35

标签: php codeigniter

我正在使用codeigniter 2.2.6作为我的服务器(我是CI中的新手),当我尝试使上传文件演示工作时,但当我点击提交按钮时没有任何反应。

以下是我遵循的用户指南:

File Uploading Class

视图文件:

<html>
<head>
<title>Upload Form</title>
</head>
<body>

<?php echo $error;?>

<?php echo form_open_multipart('upload/do_upload');?>

<input type="file" name="userfile" size="20" />

<br /><br />

<input type="submit" value="upload" />

</form>

</body>
</html>

控制器:

<?php
class Upload extends CI_Controller {
    function __construct() {
        parent::__construct ();
        $this->load->helper ( array (
                'form',
                'url' 
        ) );
    }
    function index() {
        echo CI_VERSION;

        $this->load->view ( 'upload_form', array (
                'error' => ' ' 
        ) );
    }

    function do_upload() {
        $config ['upload_path'] = './uploads/';
        $config ['allowed_types'] = 'gif|jpg|png';
        $config ['max_size'] = '100';
        $config ['max_width'] = '1024';
        $config ['max_height'] = '768';

        $this->load->library ( 'upload', $config );

        echo "step 1";

        if (! $this->upload->do_upload ()) {
            echo "step 2";

            $error = array (
                    'error' => $this->upload->display_errors () 
            );

            $this->load->view ( 'upload_form', $error );
        } else {
            echo "step 3";

            $data = array (
                    'upload_data' => $this->upload->data () 
            );

            $this->load->view ( 'upload_success', $data );
        }
    }
}
?>

我可以看到浏览并提交按钮,在选择文件后,文件名被正确显示但是当我点击提交时,没有任何反应,看起来没有处理提交点击。

正如你所看到的,我设置了3个echo&#34; step。&#34;按照流程,但没有一个打印,我不知道为什么。

有人可以帮忙吗?请解释一下按钮点击处理背后的逻辑。

1 个答案:

答案 0 :(得分:0)

问题是动作网址不正确。

<form enctype="multipart/form-data" accept-charset="utf-8" method="post" action="http://::1/upload/do_upload"> 
    <input type="file" size="20" name="userfile"> <br> <br>
     <input type="submit" value="upload">
 </form>

这似乎与我为删除网站网址中的index.php所做的工作有关, 我有

$config['base_url'] = '';

这使得动作网址变为

http://::1/upload/do_upload

这使得演示不起作用,解决方案是手动添加正确的动作URL。