我正在使用codeigniter 2.2.6作为我的服务器(我是CI中的新手),当我尝试使上传文件演示工作时,但当我点击提交按钮时没有任何反应。
以下是我遵循的用户指南:
视图文件:
<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;按照流程,但没有一个打印,我不知道为什么。
有人可以帮忙吗?请解释一下按钮点击处理背后的逻辑。
答案 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。