Các bản sao có thể: Hình ảnh trong MySQL lưu trữ hình ảnh trong MySQL
Images in MySQL
Storing images in MySQL
Tôi đang cố gắng phát triển một trang web nơi người dùng tải lên hình ảnh của họ như một phần của đăng ký. Tôi muốn nó cho mỗi hình ảnh, cần có một ngón tay cái được tạo bằng PHP (điều này không khó). Tôi muốn lưu các ngón tay cái (vì chúng rất nhỏ) trong cơ sở dữ liệu và tôi sử dụng MySQL. . Nếu nó không hỗ trợ dữ liệu hình ảnh, có bất kỳ cơ sở dữ liệu miễn phí nào không? Tôi sẽ rất vui nếu một liên kết có thể được cung cấp. Cảm ơn.
Does MySQL allow saving and retrieving image data and how do I go about it? If it doesn't support image data, is there any free database that does? I will be happy
if a link can be provided.
Thanks.
hỏi ngày 24 tháng 6 năm 2011 lúc 18:32Jun 24, 2011 at 18:32
10
Có, bạn có thể lưu trữ hình ảnh trong cơ sở dữ liệu, nhưng theo ý kiến của tôi không nên, và đó không phải là thông lệ chung.
Một thực tiễn chung là lưu trữ hình ảnh trong các thư mục trên hệ thống tệp và lưu trữ các tham chiếu đến các hình ảnh trong cơ sở dữ liệu. ví dụ. Đường dẫn đến hình ảnh, tên hình ảnh, v.v. hoặc cách khác, bạn thậm chí có thể lưu trữ hình ảnh trên mạng phân phối nội dung (CDN) hoặc nhiều máy chủ trên một số lãnh thổ vật lý rộng lớn và lưu trữ các tham chiếu để truy cập các tài nguyên đó trong cơ sở dữ liệu.
Hình ảnh có thể khá lớn, lớn hơn 1MB. Và do đó, lưu trữ hình ảnh trong cơ sở dữ liệu có khả năng đặt tải không cần thiết vào cơ sở dữ liệu của bạn và mạng giữa cơ sở dữ liệu và máy chủ web của bạn nếu chúng ở các máy chủ khác nhau.
Tôi đã làm việc tại các công ty khởi nghiệp, các công ty cỡ trung và các công ty công nghệ lớn với 400K+ nhân viên. Trong 13 năm kinh nghiệm chuyên nghiệp của tôi, tôi chưa bao giờ thấy ai lưu trữ hình ảnh trong cơ sở dữ liệu. Tôi nói điều này để hỗ trợ tuyên bố đó là một thực hành không phổ biến.
Đã trả lời ngày 24 tháng 6 năm 2011 lúc 18:35Jun 24, 2011 at 18:35
FinalFormFinalFormFinalForm
5.7465 Huy hiệu vàng20 Huy hiệu bạc38 Huy hiệu Đồng5 gold badges20 silver badges38 bronze badges
10
Bạn sẽ cần lưu dưới dạng blob, kiểu dữ liệu longblob trong MySQL sẽ hoạt động.
Ex:
CREATE TABLE 'test'.'pic' ( 'idpic' INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, 'caption' VARCHAR(45) NOT NULL, 'img' LONGBLOB NOT NULL, PRIMARY KEY ('idpic') )Như những người khác đã nói, đó là một thực hành tồi nhưng nó có thể được thực hiện. Không chắc chắn nếu mã này sẽ mở rộng quy mô tốt, mặc dù.
Đã trả lời ngày 24 tháng 6 năm 2011 lúc 18:37Jun 24, 2011 at 18:37
2
Bạn có thể lưu trữ hình ảnh trong MySQL dưới dạng Blobs. Tuy nhiên, điều này có vấn đề vì một vài lý do:
- Các hình ảnh có thể khó thao tác hơn: Trước tiên bạn phải truy xuất chúng từ cơ sở dữ liệu trước khi có thể thực hiện hoạt động hàng loạt.
- Ngoại trừ trong những trường hợp rất hiếm gặp trong đó toàn bộ cơ sở dữ liệu được lưu trữ trong RAM, cơ sở dữ liệu MySQL cuối cùng được lưu trữ trên đĩa. Điều này có nghĩa là hình ảnh DB của bạn được chuyển đổi thành Blobs, được chèn vào cơ sở dữ liệu và sau đó được lưu trữ trên đĩa; Bạn có thể tiết kiệm rất nhiều chi phí bằng cách lưu trữ chúng trên đĩa.
Thay vào đó, hãy xem xét cập nhật bảng của bạn để thêm trường Image_Path. Ví dụ:
ALTER TABLE `your_table` ADD COLUMN `image_path` varchar(1024)Sau đó lưu trữ hình ảnh của bạn trên đĩa và cập nhật bảng với đường dẫn hình ảnh. Khi bạn cần sử dụng hình ảnh, hãy truy xuất chúng từ đĩa bằng đường dẫn được chỉ định.
Một tác dụng phụ thuận lợi của phương pháp này là hình ảnh không nhất thiết phải được lưu trữ trên đĩa; Bạn có thể dễ dàng lưu trữ một URL thay vì đường dẫn hình ảnh và truy xuất hình ảnh từ bất kỳ vị trí kết nối Internet nào.
Đã trả lời ngày 24 tháng 6 năm 2011 lúc 18:35Jun 24, 2011 at 18:35
FinalFormFinalFormGeorge Cummins
5.7465 Huy hiệu vàng20 Huy hiệu bạc38 Huy hiệu Đồng8 gold badges69 silver badges90 bronze badges
6
Bạn sẽ cần lưu dưới dạng blob, kiểu dữ liệu longblob trong MySQL sẽ hoạt động.
Như những người khác đã nói, đó là một thực hành tồi nhưng nó có thể được thực hiện. Không chắc chắn nếu mã này sẽ mở rộng quy mô tốt, mặc dù.
Đã trả lời ngày 24 tháng 6 năm 2011 lúc 18:37
$data = file_get_contents($_FILES['photo']['tmp_name']);Bạn có thể lưu trữ hình ảnh trong MySQL dưới dạng Blobs. Tuy nhiên, điều này có vấn đề vì một vài lý do:
Các hình ảnh có thể khó thao tác hơn: Trước tiên bạn phải truy xuất chúng từ cơ sở dữ liệu trước khi có thể thực hiện hoạt động hàng loạt.
Ngoại trừ trong những trường hợp rất hiếm gặp trong đó toàn bộ cơ sở dữ liệu được lưu trữ trong RAM, cơ sở dữ liệu MySQL cuối cùng được lưu trữ trên đĩa. Điều này có nghĩa là hình ảnh DB của bạn được chuyển đổi thành Blobs, được chèn vào cơ sở dữ liệu và sau đó được lưu trữ trên đĩa; Bạn có thể tiết kiệm rất nhiều chi phí bằng cách lưu trữ chúng trên đĩa.
Thay vào đó, hãy xem xét cập nhật bảng của bạn để thêm trường Image_Path. Ví dụ:25 gold badges118 silver badges208 bronze badges
Sau đó lưu trữ hình ảnh của bạn trên đĩa và cập nhật bảng với đường dẫn hình ảnh. Khi bạn cần sử dụng hình ảnh, hãy truy xuất chúng từ đĩa bằng đường dẫn được chỉ định.Jun 24, 2011 at 18:38
Một tác dụng phụ thuận lợi của phương pháp này là hình ảnh không nhất thiết phải được lưu trữ trên đĩa; Bạn có thể dễ dàng lưu trữ một URL thay vì đường dẫn hình ảnh và truy xuất hình ảnh từ bất kỳ vị trí kết nối Internet nào.bsimic
GEORGE CUMMINSEGRE CUMMINS7 silver badges15 bronze badges
1