Я хочу загрузить изображение через эту форму:
<?php echo form_open_multipart('posts/create'); ?>
<div class="form-group">
<label>Title</label>
<input type="text" class="form-control" name="title" placeholder="Add Title" required>
</div>
<div class="form-group">
<label>Body</label>
<textarea id="editor1" class="form-control" name="body" placeholder="Add Body" required></textarea>
</div>
<div class="form-group">
<label>Category</label>
<select name="category_id" class="form-control">
<?php foreach($categories as $category): ?>
<option value="<?php echo $category['id']; ?>"><?php echo $category['name']; ?></option>
<?php endforeach; ?>
</select>
</div>
<div class="form-group">
<label>Upload Image</label>
<input type="file" name="userfile" size="20">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
И когда я отправляю информацию, я проверяю, есть ли в петиции POST правильные данные.Это не так.
Показывает, что все входы ожидают ввода файла ...
Это контроллер,называется Posts, а функция вызывается create.
public function create() {
$data['title'] = 'Create post';
$data['categories'] = $this->post_model->get_categories();
$this->form_validation->set_rules('title', 'Title', 'required');
$this->form_validation->set_rules('body', 'Body', 'required');
if (!$this->form_validation->run()) {
$this->load->view('templates/header');
$this->load->view('posts/create', $data);
$this->load->view('templates/footer');
} else {
// Upload image
$config['upload_path'] = 'assets/images/posts';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = 2048;
$config['max_width'] = 2000;
$config['max_height'] = 2000;
$this->load->library('upload', $config);
# Here's where I print the request.
print_r($_POST);
if (!$this->upload->do_upload('userfile')) {
$errors = array('error' => $this->upload->display_errors());
$post_image = 'noimage.jpg';
} else {
$data = array('upload_data' => $this->upload->data());
$post_image = $_FILES['userfile']['name'];
}
echo $post_image;
/* $this->post_model->create_post($post_image);
redirect('posts'); */
}
}
Файл autoloader.php настроен правильно ...
$autoload['helper'] = array('url', 'form', 'text');
Если кому-то нужен полный проект, здесь выgo
Я использую Docker для его запуска, с помощью docker-compose up --build
вы можете проверить его.