Я хочу загрузить 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);