Chương trình của bạn là chính xác. Nếu kích thước tệp nhỏ thì nó sẽ hoạt động tốt. Nếu bạn đang sử dụng BLOB
kiểu dữ liệu để lưu trữ dữ liệu nhị phân đó, hãy thay đổi nó thành LONGBLOB
. Bởi vì nếu bạn đã cố gắng lưu một tệp trong BLOB
trường dữ liệu và nếu kích thước tệp lớn hơn kích thước tối đa cho phép của kiểu dữ liệu BLOB thì nội dung sẽ bị cắt bớt và bạn sẽ mất một số nội dung của tệp (tùy thuộc vào kích thước tệp). Ngay cả khi bạn sử dụng LONGBLOB
datatype có một số thứ bạn phải kiểm tra. Tôi sẽ giải thích
Trong trang web mysql, chúng ta có thể thấy kích thước tệp tối đa là LONGBLOB
là 4GB. Nhưng nó phụ thuộc vào nhiều thứ. Để lưu trữ tệp lớn, bạn phải kiểm tra một số điều. Điều đầu tiên là trong my.ini
tệp, có một thuộc tính được gọi là max_allowed_packet
, nó chỉ định gói lớn nhất có thể được truyền đến hoặc từ máy khách hoặc máy chủ mysql. Bạn nên đặt max_allowed_packet
tài sản có giá trị cao hơn. Và khởi động lại mysql. Một số hệ thống tệp sẽ không cho phép tệp 4GB. Trong trường hợp đó, bạn không thể tải nhiều tệp lớn như vậy.
Tôi nghĩ trong trường hợp của bạn cài đặt max_allowed_packet
thuộc tính có giá trị cao hơn sẽ khắc phục được sự cố.
Tôi nghĩ bạn có thể sử dụng tập lệnh tạo bảng sau
CREATE TABLE `image` (
`id` INT(10) NULL DEFAULT NULL,
`fs` LONGBLOB NULL,
`filen` VARCHAR(50) NULL DEFAULT NULL
)