У меня есть вопрос о codeigniter, почему у меня отсутствует аргумент в файле do_upload excel, на localhost это работает, но после копирования на сервер Linux у него возникает такая ошибка:
Обнаружена ошибка PHP. Серьезность: предупреждающее сообщение: отсутствует
аргумент 1 для chapter :: do_upload, вызываемого в
/var/www/html/myfolder/application/controller/chapter.php в строке 19
и определенное имя файла: contollers / chapter.php Номер строки: 32
что я скучаю по этому коду?
вот мой код вида:
<center>
</br>
</br>
<?php echo form_open_multipart('chapter') . "\n"; ?>
<table>
<tr>
<td><input type="file" id="file_upload" name="userfile" size="20" /></td>
<td valign="top" >
<?php echo form_submit('submit', 'Upload'); ?></td>
</tr>
</table>
<?php echo form_close(); ?>
<?php
if ($this->session->flashdata('msg_excel')){
?>
<div class="msg"><?php echo $this->session->flashdata('msg_excel'); ?></div>
<?php } ?>
</br>
</br>
</div>
</center>
mycontoller:
<?php
class Chapter extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->model('Querypage');
$this->load->model('m_login');
$this->load->helper(array('form', 'url', 'inflector'));
$this->load->library('form_validation');
}
public function index()
{
if ($this->input->post('submit'))
{
$this->do_upload();
$this->load->view('chapter');
}
else
{
$this->load->model('m_jadwal','',TRUE);
$user = $this->session->userdata('username');
$data['pengguna'] = $this->m_login->dataPengguna($user);
$data['kdsmtaktif'] = $this->m_login->smtaktif();
$this->load->view('aka_v', $data);
$this->load->view('chapter');
}
}
public function do_upload()
{
$config['upload_path'] = './temp_upload/';
$config['allowed_types'] = 'xls';
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload())
{
$data = array('error' => $this->upload->display_errors());
$this->session->set_flashdata('msg_excel', 'Gagal Memasukkan data. Cek file anda, hanya .xls yang diperbolehkan.');
}
else
{
$data = array('error' => false);
$upload_data = $this->upload->data();
$this->load->library('excel_reader');
$this->excel_reader->setOutputEncoding('CP1251');
$file = $upload_data['full_path'];
$this->excel_reader->read($file);
error_reporting(E_ALL ^ E_NOTICE);
// Sheet 1
$data = $this->excel_reader->sheets[0] ;
$dataexcel = Array();
for ($i = 8; $i <= $data['numRows']; $i++) {
if($data['cells'][$i][1] == '') break;
$dataexcel[$i-1]['data1'] = $data['cells'][$i][1];
$dataexcel[$i-1]['data2'] = $data['cells'][$i][2];
$dataexcel[$i-1]['data3'] = $data['cells'][$i][3];
}
//cek data
$check= $this->Querypage->search_chapter($dataexcel);
if (count($check) > 0)
{
$this->Querypage->update_chapter($dataexcel);
// set pesan
$this->session->set_flashdata('msg_excel', 'update data success');
}else{
$this->Querypage->insert_chapter($dataexcel);
// set pesan
$this->session->set_flashdata('msg_excel', 'inserting data success');
}
}
echo " <script>
history.go(-2);
</script>";
}
}
?>
В вашем контроллере поменяйте:
public function do_upload($user, $kdsmt) //on line 32
Для того, чтобы:
public function do_upload()
Вы не используете ни один из параметров в вашем методе, поэтому нет необходимости иметь их. Что еще более важно, если вы объявили params с помощью функции и не дали им значение по умолчанию, тогда PHP выдаст ошибку, если вы ничего не передадите им.
Надеюсь это поможет!
Заменить:
$this->upload->do_upload()
к:
$this->upload->do_upload("userfile")
куда userfile
это имя вашего файла ввода.
CodeIgniter Загрузить: https://ellislab.com/codeigniter/user-guide/libraries/file_uploading.html