Hướng dẫn mysql data type for base64 image - kiểu dữ liệu mysql cho hình ảnh base64

Người ta không nên lưu trữ dữ liệu được mã hóa cơ sở trong cơ sở dữ liệu của một người ...

Base64 là một mã hóa trong đó dữ liệu nhị phân tùy ý được biểu diễn chỉ bằng các ký tự văn bản có thể in: nó được thiết kế cho các tình huống mà dữ liệu nhị phân đó cần được chuyển qua một giao thức hoặc phương tiện chỉ có thể xử lý văn bản có thể in (ví dụ: SMTP/email). Nó tăng kích thước dữ liệu (lên 33%) và thêm chi phí tính toán của mã hóa/giải mã, do đó nên tránh trừ khi thực sự cần thiết.

Ngược lại, toàn bộ điểm của các cột BLOB là chúng lưu trữ các chuỗi nhị phân mờ đục. Vì vậy, chỉ cần tiếp tục và lưu trữ nội dung của bạn trực tiếp vào các cột BLOB của bạn mà không cần mã hóa cơ sở đầu tiên. . Siêu dữ liệu nhiều hơn về điều này dưới đây).the whole point of BLOB columns is that they store opaque binary strings. So just go ahead and store your stuff directly into your BLOB columns without first Base64-encoding them. (That said, if MySQL has a more suitable type for the particular data being stored, you may wish to use that instead: for example, text files like JavaScript sources could benefit from being stored in TEXT columns for which MySQL natively tracks text-specific metadata—more on this below).

Ý tưởng (sai lầm) rằng cơ sở dữ liệu SQL yêu cầu mã hóa văn bản có thể in như Base64 để xử lý dữ liệu nhị phân tùy ý đã được duy trì bởi một số lượng lớn các hướng dẫn không có thông tin. Ý tưởng này dường như được đặt trong niềm tin sai lầm rằng, bởi vì SQL chỉ bao gồm văn bản có thể in trong các bối cảnh khác, nó chắc chắn cũng phải yêu cầu nó cho dữ liệu nhị phân (ít nhất là để truyền dữ liệu, nếu không lưu trữ dữ liệu). Điều này chỉ đơn giản là không đúng: SQL có thể truyền tải dữ liệu nhị phân theo một số cách, bao gồm các chuỗi chuỗi đơn giản (miễn là chúng được trích dẫn và thoát ra đúng như bất kỳ chuỗi nào khác); Tất nhiên, cách ưa thích để truyền dữ liệu (thuộc bất kỳ loại nào) cho cơ sở dữ liệu của bạn là thông qua các truy vấn được tham số hóa và các loại dữ liệu của các tham số của bạn có thể dễ dàng trở thành chuỗi nhị phân thô như bất kỳ thứ gì khác.

... Trừ khi nó được lưu trữ vì lý do hiệu suất ...

Tình huống duy nhất trong đó có thể có một số lợi ích từ việc lưu trữ dữ liệu được mã hóa Base64 là nơi nó thường được truyền qua một giao thức yêu cầu mã hóa như vậy (ví dụ: bằng cách đính kèm email) ngay sau khi được lấy từ cơ sở dữ liệu trong trường hợp đó, lưu trữ cơ sở Biểu diễn sẽ lưu khỏi việc phải thực hiện hoạt động mã hóa trên dữ liệu thô khác trên mỗi lần tìm nạp.

Tuy nhiên, lưu ý theo nghĩa này rằng bộ nhớ được mã hóa cơ sở64 chỉ đóng vai trò là bộ đệm, giống như người ta có thể lưu trữ dữ liệu bị biến dạng cho lý do hiệu suất.

... trong trường hợp đó sẽ không phải là ____ không BLOB

Như đã đề cập ở trên: Sự khác biệt duy nhất giữa các cột TEXTBLOB là, đối với các cột TEXT, MySQL cũng theo dõi siêu dữ liệu cụ thể của văn bản (như mã hóa ký tự và đối chiếu) cho bạn. Siêu dữ liệu bổ sung này cho phép MySQL chuyển đổi các giá trị giữa các bộ ký tự lưu trữ và kết nối (nếu thích hợp) và thực hiện các hoạt động so sánh/sắp xếp chuỗi ưa thích.

Nói chung: Nếu hai máy khách làm việc trong các bộ ký tự khác nhau sẽ thấy cùng một byte, thì bạn muốn một cột BLOB; Nếu họ sẽ thấy các ký tự giống nhau thì bạn muốn một cột TEXT.

Với Base64, hai máy khách đó cuối cùng phải thấy rằng dữ liệu giải mã thành cùng một byte; Nhưng họ sẽ thấy rằng dữ liệu được lưu trữ/mã hóa có cùng ký tự. Ví dụ, giả sử một người muốn chèn mã hóa cơ sở64 của BLOB0 (đó là BLOB1). Nếu ứng dụng chèn đang hoạt động trong bộ ký tự UTF-8, thì nó sẽ gửi chuỗi byte BLOB2 đến cơ sở dữ liệu.

  • Nếu chuỗi byte đó được lưu trữ trong cột BLOB và sau đó được truy xuất bởi một ứng dụng đang hoạt động trong UTF-16*, thì các byte tương tự sẽ được trả về, đại diện cho BLOB4 chứ không phải giá trị được mã hóa cơ sở64 mong muốn; nhưng trái lại

  • Nếu chuỗi byte đó được lưu trữ trong cột TEXT và sau đó được truy xuất bởi một ứng dụng đang hoạt động trong UTF-16, MySQL sẽ chuyển mã trên FLE để trả về trình tự byte ____ 16 .

Tất nhiên, tuy nhiên, bạn có thể sử dụng các cột BLOB và theo dõi mã hóa ký tự theo một cách khác, nhưng điều đó sẽ không cần thiết phải phát minh lại bánh xe, với sự phức tạp bảo trì và nguy cơ đưa ra các lỗi không chủ ý.


* Trên thực tế, MySQL không hỗ trợ sử dụng các bộ ký tự máy khách không tương thích byte với ASCII (và do đó mã hóa Base64 sẽ luôn nhất quán trên bất kỳ sự kết hợp nào của chúng), nhưng ví dụ này vẫn phục vụ để minh họa cho sự khác biệt giữa các loại cột BLOBTEXT và do đó giải thích lý do tại sao TEXT về mặt kỹ thuật chính xác cho mục đích này mặc dù BLOB sẽ thực sự hoạt động mà không có lỗi (ít nhất là cho đến khi MySQL thêm hỗ trợ cho các bộ ký tự máy khách không tương thích ASCII).

Loại dữ liệu nào là Base64?

Base64 là một nhóm các sơ đồ mã hóa nhị phân từ văn bản đại diện cho dữ liệu nhị phân ở định dạng chuỗi ASCII bằng cách dịch nó thành biểu diễn Radix-64. Bằng cách chỉ bao gồm các ký tự ASCII, các chuỗi Base64 thường an toàn URL và đó là lý do tại sao chúng có thể được sử dụng để mã hóa dữ liệu trong URL dữ liệu.binary data in an ASCII string format by translating it into a radix-64 representation. By consisting only of ASCII characters, base64 strings are generally url-safe, and that's why they can be used to encode data in Data URLs.

Tôi có thể lưu trữ base64 trong mysql không?

Base64 chỉ được sử dụng như một cơ chế vận chuyển, không phải để lưu trữ.Ví dụ: bạn có thể nhúng hình ảnh được mã hóa Base64 vào tài liệu XML hoặc thông báo email.Base64 cũng thân thiện với Stream.Bạn có thể mã hóa và giải mã trên con ruồi (mà không biết tổng kích thước của dữ liệu).. For example, you can embed a base64 encoded image into an XML document or an email message. Base64 is also stream friendly. You can encode and decode on the fly (without knowing the total size of the data).

Hình ảnh Base64 có phải là một chuỗi không?

Base64 là một thuật toán mã hóa chuyển đổi bất kỳ ký tự, dữ liệu nhị phân và thậm chí các tệp hình ảnh hoặc âm thanh thành một chuỗi có thể đọc được, có thể được lưu hoặc vận chuyển qua mạng mà không bị mất dữ liệu.Các ký tự được tạo từ mã hóa Base64 bao gồm các chữ cái Latin, chữ số, cộng và chém., which can be saved or transported over the network without data loss. The characters generated from Base64 encoding consist of Latin letters, digits, plus, and slash.

Định dạng hình ảnh Base64 là gì?

Mã hóa Base64 là một cách để mã hóa dữ liệu nhị phân trong văn bản ASCII.Nó chủ yếu được sử dụng để lưu trữ hoặc chuyển hình ảnh, tệp âm thanh và phương tiện trực tuyến khác.Nó cũng thường được sử dụng khi có những hạn chế đối với các ký tự có thể được sử dụng trong tên tệp vì nhiều lý do.a way to encode binary data in ASCII text. It's primarily used to store or transfer images, audio files, and other media online. It is also often used when there are limitations on the characters that can be used in a filename for various reasons.