2010-05-18 41 views
6

có cách nào để chèn ảnh (không phải url, ảnh) vào bảng MYSQL được tạo bằng phpmyadmin không? và nếu có khi tôi muốn có được hình ảnh đó và chèn nó vào trang, tôi nên làm gì? :)Tôi có thể chèn hình ảnh vào bảng MYSQL DB không?

+1

sử dụng kiểu BLOB, nó sẽ chèn hình ảnh là 0 và 1 của – Karthik

+1

và đảm bảo tiết kiệm (và trả lời) với các loại mime thích hợp tương ứng với các loại 0 và 1 ... – aioobe

Trả lời

7

Có thể (sử dụng loại BLOB) nhưng tốt hơn hết là chỉ lưu trữ hình ảnh trong hệ thống tệp và chỉ lưu trữ đường dẫn đến hình ảnh trong cơ sở dữ liệu.

Một vài lý do tại sao ra khỏi đỉnh đầu của tôi:

  1. BLOBs sẽ phình kích thước của cơ sở dữ liệu của bạn, thực hiện sao lưu và khôi phục khả năng khó khăn hơn (mặc dù một số người cho rằng nó làm cho nó dễ dàng hơn vì bạn chỉ phải sao lưu cơ sở dữ liệu thay vì cơ sở dữ liệu cộng với một loạt các tệp).

  2. Lưu trữ dữ liệu dưới dạng BLOB có thể gây ra sự cố về hiệu suất nếu bạn có mã lười sử dụng select *.

  3. Cung cấp hình ảnh từ hệ thống tệp sẽ nhanh hơn phân phối chúng từ cơ sở dữ liệu và giảm tải trên máy chủ db.

  4. Bạn sẽ linh hoạt với nơi bạn phân phát hình ảnh - ví dụ: nếu bạn muốn chuyển chúng sang CDN trong tương lai.

0

Nếu bạn thường xuyên tìm nạp hình ảnh, có thể bạn nên lưu trữ nó dưới dạng tệp và lưu đường dẫn, để lưu cơ sở dữ liệu chạy tìm nạp hình ảnh.

Nếu không, lưu trữ nội dung của tệp hình ảnh trong cột BLOB, sau đó in <img src="image.php?id=1234" /> trong HTML.

image.php nên tra cứu hình ảnh có ID 1234 trong cơ sở dữ liệu, tìm nạp nội dung của cột BLOB đó và in sau khi phân phát tiêu đề HTTP chính xác, ví dụ: header('Content-type: image/gif');

Nhưng nghiêm túc. Chỉ cần lưu tệp hình ảnh. Đó là ít hơn một nỗi đau, tôi hứa.

0

Khi nói đến tài nguyên tĩnh như hình nền hoặc biểu tượng menu, v.v, tôi chưa bao giờ thấy bất kỳ ai lưu trữ chúng trong cơ sở dữ liệu. Đối với nội dung động như hình ảnh do người dùng tải lên, nó không phải là không phổ biến.

Dưới đây là một số hình ảnh lưu trữ của người chuyên nghiệp và con trong cơ sở dữ liệu.

Lợi ích:

  • Đó là về mặt kỹ thuật không khác biệt so với các dữ liệu khác. Chỉ cần nhiều hơn, và ở định dạng nhị phân.
  • Hình ảnh được sao lưu cùng với phần còn lại của cơ sở dữ liệu.
  • Không đầu đau của việc mất đồng bộ (có một con đường trong cơ sở dữ liệu trỏ đến một hình ảnh không tồn tại, hoặc hình ảnh unreferenced trong cơ sở dữ liệu)

Nhược điểm:

  • Lưu trữ các tệp riêng lẻ là chính xác những gì hệ thống tệp được hướng tới, vì vậy nó sẽ có khả năng mở rộng tốt hơn.
  • Dễ dàng gỡ lỗi thủ công/xem hình ảnh
  • Máy chủ web có thể phục vụ trực tiếp hình ảnh (không cần thêm mã để tải nội dung từ cơ sở dữ liệu và phân phối loại mime phù hợp v.v.).

Cá nhân tôi luôn thấy rằng lợi ích vượt quá hạn chế và luôn có hình ảnh (cùng với loại mime) trong cơ sở dữ liệu. Tôi đã không bao giờ nhận thấy bất kỳ hạn chế hoặc các vấn đề hiệu suất nhưng mặt khác tôi đã không bao giờ làm việc trên các trang web thực sự lớn.

câu hỏi liên quan và các nguồn lực:

Các vấn đề liên quan