我的问题是我有一个适用于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。
答案 0 :(得分:0)
我认为您的域名不是在实时服务器上获取的。使用ip地址或低于全局变量$ _SERVER
尝试更改$config['base_url'] = $_SERVER['SERVER_NAME'];
答案 1 :(得分:0)
我不知道此功能,请尝试将Board twinBoard = new Board(this);
更改为
$this->savefn($filename);