Base64 кодирует загруженный файл, затем сохраняет в базе данных

Я хочу загрузить 64-разрядный загруженный файл, а затем сохранить его в столбце типа BLOB таблицы в базе данных MySQL.

Я пробовал встроенную функцию PHP base64_encode с переменной файла, но это не работает.

Есть ли способ, которым мы можем это сделать?

Причина в том, что я не хочу использовать перемещенный файл в папку.

Спасибо.

Как правильно указывают @Sjoerd и @zerkms, вам не нужно это делать – для хранения необработанных двоичных данных используется столбец blob, поэтому вы можете обойти процесс Base64 и вставить необработанные данные файла.

Если вы хотите хранить изображения в базе данных (что, кстати, мне лично не нравится делать), лучше хранить необработанные данные – кодировка Base64, что делает ее более крупной, и означает, что она должна быть расшифрована до изображение визуализируется, что увеличивает накладные расходы на обработку.

Таким образом вы можете вставлять необработанные двоичные данные (предполагая расширение MySQL):

$data = file_get_contents($_FILES['name_of_control']['tmp_name']); $data = mysql_real_escape_string($data); $query = " INSERT INTO table (`blob_column`) VALUES ('$data') "; mysql_query($query); 

Если вы действительно хотите, чтобы Base64 закодировал его (в этом случае его можно было просто сохранить в varchar), просто добавьте base64_encode() :

 $data = file_get_contents($_FILES['name_of_control']['tmp_name']); $data = base64_encode($data); // There is an argument that this is unnecessary with base64 encoded data, but // better safe than sorry :) $data = mysql_real_escape_string($data); $query = " INSERT INTO table (`varchar_column`) VALUES ('$data') "; mysql_query($query);