我正在尝试上传多个文件,我想用当前时间重命名每个文件。但当我上传文件时,我会收到一个类似的错误
您没有选择要上载的文件。
我真的不知道哪里出了问题。。
如有任何帮助,我们将不胜感激。非常感谢。
这是我的控制器:
public function upload_form()
{
//load the helper
$this->load->helper('form');
$msg = array('msg' => "");
if (isset($_FILES['upload_file'])) {
$class = $this->input->post('class');
$subject = $this->input->post('subject');
$topic = $this->input->post('topic');
$msg = array('msg' => "Upload success!");
$config['upload_path'] = './assets/uploads/';
$config['allowed_types'] = 'pdf|jpg|png|jpeg|gif';
$this->load->library('upload', $config);
$files = $_FILES;
$cpt = sizeof($_FILES['upload_file']['name']);
if(!$this->upload->do_upload('upload_file')){
$msg = array('msg' => $this->upload->display_errors());
}
else{
$data = array(
'class' => $class,
'subject' => $subject,
'topic' => $topic,
'file' => [
'file_name' => $_FILES['upload_file']['name']
]
);
$this->mongo_db->insert('file_upload', $data);
}
for ($i = 0; $i < $cpt; $i++) {
$this->upload->initialize($config);
$file_name = (microtime(true) * 1000);
$_FILES['upload_file']['name'] = $file_name;
$_FILES['upload_file']['type'] = $files['upload_file']['type'][$i];
$_FILES['upload_file']['tmp_name'] = $files['upload_file']['tmp_name'][$i];
$_FILES['upload_file']['error'] = $files['upload_file']['error'][$i];
$_FILES['upload_file']['size'] = $files['upload_file']['size'][$i];
}
}
$this->load->view('worksheets/header');
$this->load->view('worksheets/upload_form', $msg);
}
视图:
<?php echo $msg; ?>
<?php echo form_open_multipart('worksheets/upload_form/'); ?>
<input type="file" name="upload_file[]" multiple="multiple" class="custom- file-input" size="2000"/>
<input type="submit" value="Fire" class="upload_submit"/>
<?php echo form_close(); ?>
尝试打印$_FILES['pload_file']的结果,您会发现错误。
基本上,Codeigner文件上传库不适用于使用<input type="file" name="upload[]" multiple>
上传多个文件
您需要多个文件输入,因为它只将输入的名称作为字符串。
或者,您可以扩展库以上载多个文件。
你可以使用这个>https://github.com/stvnthomas/CodeIgniter-Multi-Upload