2012-06-05 35 views
2

我需要使用codeigniter在mysql數據庫中上傳文件。 我的看法是:使用codeigniter將文件上傳到數據庫

<?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> 

和控制器是:

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'); 
} 

當我想要顯示的文件我把這個觀點:

<?php 
header("Content-type: ".$file['type']); 
echo $file; 
?> 

由該控制器稱爲:

<?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); 
} 

}

的問題是,我有一個錯誤,而我所說的觀點在瀏覽器中,你可以在這裏看到:http://mattialori.net/amv/index.php/file/id/2 如果我上傳文件,它的工作原理數據庫採用的phpmyadmin。

我該怎麼辦?

回答

6

爲什麼不把文件名保存到數據庫? 然後,您可以將img上傳到特定的文件夾,並在您的視圖中,您可以設置文件夾的完整路徑,並在文件末尾附加文件名。

編輯: 您可以使用文件上傳類以這樣的方式

//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 
} 
相關問題