Vấn đề nằm ở phương thức khởi tạo của tệp hình ảnh:
std::ifstream blob_file(filename.c_str());
Điều này phải có thuộc tính chế độ nhị phân:
std::ifstream blob_file(filename.c_str(), std::ios_base::binary);
Tệp, hình ảnh JPEG, là tệp nhị phân dữ liệu.
Ngoài ra, kết xuất hex ở byte 65 hiển thị 1a
, là ký tự cuối của hệ điều hành Windows:
0000040 1a 14 1115 1811 1821 1d1a 1f1d 1f1f 1713
Sau khi sửa hàm tạo, MySql hiển thị kích thước dữ liệu:
mysql> SELECT ID_Picture, LENGTH(Image_Data)
-> FROM picture_image_data
-> WHERE ID_Picture = 1;
+------------+--------------------+
| ID_Picture | LENGTH(Image_Data) |
+------------+--------------------+
| 1 | 18453 |
+------------+--------------------+
1 row in set (0.00 sec)