无法使用codeigniter do_upload上传文件

时间:2017-08-06 10:24:11

标签: php codeigniter file-upload

我的问题是我有一个适用于localhost但不适用于生产服务器的代码。我想通过表单上传文件。在localhost中一切正常,但在生产服务器上,我得到'你没有选择要上传的文件'错误。

视图部分

<?php echo form_open_multipart('Ajax/do_upload');?>
<input type="file" name="file">
<input type="submit" name="submit" value="upload image" />
<?php echo form_close();?>

控制器部分(控制器Ajax,函数do_upload)

public function do_upload(){

    $config['upload_path']          = './assets/images/usr_uploads/';
    $config['allowed_types']        = 'gif|jpg|png|jpeg';
    $config['max_size']             = 5000;
    $config['max_width']            = 2048;
    $config['max_height']           = 2048;
    $config['overwrite']           = true;

    $this->load->library('upload', $config);
    $this->upload->initialize($config);
    $filename = $_FILES['file']['name'];

    if (!$this->upload->do_upload("file")){
        //$data['error'] = "An error occurred while uploading the image.";
        $error = array('error' => $this->upload->display_errors());
        //echo $filename;
        print_r($_FILES);
        $this->load->view('template/head.php');
        $this->load->view('profileview.php', $error);
        $this->load->view('template/footer.php');
    } else {
        $filename = $_FILES['file']['name'];
        $data['up_ok'] = $filename;
        print_r($_FILES);
        $this->savefn($filename);
        $this->updatesesssion();
        $this->load->view('template/head.php');
        $this->load->view('profileview.php', $data);
        $this->load->view('template/footer.php');
    }
}

.htaccess文件

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L] 

所以问题是,在生产服务器上,它不会从表单中获取任何文件。在localhost上它可以正常工作。我找不到这个问题的原因,我已经尝试了几乎所有我找到的东西。我也尝试过使用默认的userfile,它同样适用于localhost,但不适用于服务器,我已经将文件夹权限设置为777。

2 个答案:

答案 0 :(得分:0)

我认为您的域名不是在实时服务器上获取的。使用ip地址或低于全局变量$ _SERVER 尝试更改$config['base_url'] = $_SERVER['SERVER_NAME'];

答案 1 :(得分:0)

我不知道此功能,请尝试将Board twinBoard = new Board(this); 更改为 $this->savefn($filename);