Upload file to database using codeigniter
codeigniter, file-upload
Solution
Why don't you just save the file name into the db? Then you can upload the img in a specific folder and in your view yuo can set the full path from your folder and append the file name at the end.
EDIT: you can use the File Upload class in this way:
//Check if the file exists in the form
if($_FILES['file']['name']!=""){
//load library
$this->load->library('upload');
//Set the config
$config['upload_path'] = './uploads/'; //Use relative or absolute path
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$config['overwrite'] = FALSE; //If the file exists it will be saved with a progressive number appended
//Initialize
$this->upload->initialize($config);
//Upload file
if( ! $this->upload->do_upload("file")){
//echo the errors
echo $this->upload->display_errors();
}
//If the upload success
$file_name = $this->upload->file_name;
//Save the file name into the db
}
Problem
I need to upload a file in a mysql database using codeigniter. My view is: ``` <?php echo form_open_multipart('home/addpagina2'); ?> <label for="titolo">Titolo:</label> <input type="text" size="20" id="titolo" name="titolo"/> <br/> <label for="testo">Testo</label><br/> <textarea name="testo" cols="50" rows="10"></textarea> <br/> <label for="file">File:</label> <input type="file" name="file" /> <br /> <input type="submit" value="Aggiungi"/> </form> ``` and controller is: ``` function addpagina2(){ $this->form_validation->set_rules('titolo', 'Titolo', 'trim'); $this->form_validation->set_rules('testo', 'Testo', 'trim'); if($_FILES["file"]["size"] > 0){ $tmpName = $_FILES["file"]['tmp_name']; $fp = fopen($tmpName, 'r'); $file = fread($fp, filesize($tmpName)); $file = addslashes($file); fclose($fp); } $pagina = array(); $pagina['titolo'] = $this->input->post('titolo'); $pagina['testo'] = $this->input->post('testo'); $pagina['file'] = $file; $this->db->insert('pagine', $pagina); redirect('home/pagine'); } ``` When I want to display the file I call this view: ``` <?php header("Content-type: ".$file['type']); echo $file; ?> ``` that is called by this controller: ``` <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class File extends CI_Controller { function __construct(){ parent::__construct(); } public function index(){ } function id($id){ $immagine = $this->db->get_where('pagine', array('id' => $id)); $data['file'] = $immagine->row()->file; $this->load->view('file', $data); } ``` } the problem is that I have an error while i call the view in the browser, as you can see here: http://mattialori.net/amv/index.php/file/id/2 If I upload a file on the database using phpmyadmin it works. How can I do?