7

Tôi đang sử dụng CodeIgniter 2.1.0 và cơ sở dữ liệu MySQL. Tôi đã tải lên một hình ảnh thông qua một biểu mẫu và lưu trữ thành công nó trong một thư mục tải lên và tôi cũng đã lưu thành công đường dẫn đầy đủ của hình ảnh trong cơ sở dữ liệu của tôi. nhưng tôi đang gặp vấn đề với việc hiển thị hình ảnh bằng cách gọi đường dẫn đầy đủ từ cơ sở dữ liệu của tôi.Làm thế nào để hiển thị hình ảnh từ cơ sở dữ liệu trong CodeIgniter?

Đây là mã của tôi cho việc tải lên:

$image_path = realpath(APPPATH . '../uploads'); 

$config = array(
    'allowed_types' => 'jpeg|png|gif|jpg', 
    'upload_path' => $image_path, 
    'max_size' => 2097152, 
    'overwrite' => TRUE, 
    'file_name' => '_' . $i . '_' 
); 

$this -> load -> library('upload', $config); 

Khi tôi đang lưu trữ đường dẫn đầy đủ của hình ảnh trong cơ sở dữ liệu của tôi, nó trông giống như sau

C:/wamp/www/my_project/uploads/_1_.jpg 

Nếu tôi cố gắng

<img src="<?php echo $data['screenshot'];?>" /> 
//($data['screenshot'] refers to the image location retrieved from database) 

điều này trong tệp xem của tôi, không có hình ảnh nào được hiển thị. Tôi đang làm gì sai? Xin ai đó nói với tôi. Thủ tục tiêu chuẩn là gì?

+0

Tại sao bạn lưu trữ đường dẫn đầy đủ như 'C:/wamp/www/my_project/uploads/_1_.jpg'? Điều đó sẽ không hoạt động. Bạn cần tham khảo đường dẫn trên máy chủ web, không phải hệ thống tệp. – Flukey

+0

tôi đang sử dụng $ image_path = realpath (APPPATH. '../uploads'); để có được đường dẫn thực trong cơ sở dữ liệu. nếu nó không phải là thủ tục tiêu chuẩn, bạn vui lòng cung cấp nó? – Shabib

Trả lời

3

Trong cơ sở dữ liệu của bạn, nếu tôi đã hiểu một cách chính xác, bạn đang lưu trữ các hình ảnh như C:/wamp/www/my_project/uploads/_1_.jpg

Vì vậy, khi bạn đang vang vọng ra con đường hình ảnh img src thuộc tính, bạn sẽ có

mà thắng 't làm việc như này như là con đường địa phương trên máy tính của bạn. Tôi sẽ không có hình ảnh đó trên hệ thống tệp của tôi. Hình ảnh cần phải truy cập được trên máy chủ web. (Như file index.php của bạn)

Vì vậy, bạn cần lưu trữ hình ảnh là một trong hai điều này:

uploads/_1_.jpg

và sau đó làm <img src="<?php echo $data['screenshot'];?>" />

Hoặc lưu trữ các hình ảnh như:

_1_.jpg và và sau đó làm

<img src="<?php echo sprintf("uploads/%s", $data['screenshot']);?>" />

EDIT: Để rõ ràng: Nơi bạn lưu trữ nó là chính xác. Nhưng, bạn không cần đường dẫn đầy đủ trong DB, bạn chỉ cần đường dẫn máy chủ web.

+1

cảm ơn bạn :) nó hoạt động ngay bây giờ @flukey – Shabib

2

Bộ điều khiển:

function displayimage($Id=FALSE){ 
if ($Id)) 
{ 
    $image = $this->MMarches->getImage($Id); 
    header("Content-type: image/jpeg"); 
    print($image); 
}  } 

mẫu:

function getImage($Id){ 
$data = ''; 
$Q = $this->db->query("SELECT photo FROM tableWHERE phptoID=".$Id); 
if ($Q->num_rows()) 
{ 
    $data = $Q->row_array(); 
    $data = $data['MA_PHOTO'] 
    $Q->free_result(); 
} 
return $data;} 

Xem của bạn:

src="<?php echo site_url("controller_name/display_image/$image_id"); ?>" 

THAY THẾ MODEL:

function getImage($Id){ 
$Q = $this->db->query("SELECT photo FROM tableWHERE phptoID=".$Id); 
    if ($Q->num_rows())  { 
      $data = $Q->row_array(); 
      $data = $data['MA_PHOTO']; 
      $Q->free_result(); 
    }  
    $size = $data->size();   
    $ret = $data->read($size);  
    return (isset($ret)) ? $ret : ''; 
} 
+1

bạn vui lòng giải thích mã một chút. – Shabib

+0

Vì vậy, trong tập tin vew của bạn, bạn tham khảo bộ điều khiển, phương pháp và id hình ảnh của bạn ..., echo site_url được sử dụng để hiển thị hình ảnh. Trong bộ điều khiển của bạn, bạn cần tạo một phương thức để in hình ảnh. Phương pháp này phải gọi mô hình hình ảnh để lấy url hình ảnh bằng truy vấn sql – coppettim

+1

Tại sao bạn làm 'header (" Content-type: image/jpeg ");' this? anh ta không lưu trữ hình ảnh trong DB. Anh ấy lưu trữ tên hình ảnh. Hình ảnh được lưu trữ trên hệ thống tập tin. Và trong hàm 'getImage' của bạn, nếu tài nguyên không tồn tại, sau đó trả lại' false' không '''' – Flukey

1

Để hiển thị hình ảnh trong trình duyệt web, bạn phải cung cấp URL của hình ảnh đó thay vì PATH của hình ảnh.

mã sau không hiển thị bất kỳ hình ảnh

<img src="C:/wamp/www/my_project/uploads/_1_.jpg"/> 

Tiếp theo mã được sử dụng URL của hình ảnh, đây tên máy chủ localhost được đưa ra, bạn phải thay thế địa chỉ máy chủ của bạn với localhost.

<img src="http://localhost/www/my_project/uploads/_1_.jpg"/> 
Các vấn đề liên quan