it-swarm-pt.tech

Base64 codifica o arquivo carregado e salva no banco de dados

Eu quero base 64 codificar o arquivo carregado e salve-o na coluna tipo Blob de uma tabela no banco de dados MySQL.

Eu tentei embutido PHP função base64_encode com variável de arquivo, mas isso não parece funcionar.

Existe uma maneira de fazer isso?

O motivo é que não quero usar o arquivo moveuploaded em uma pasta.

Obrigado.

13
John Kim

Como o @Sjoerd e o @zerkms apontam corretamente, você não precisa fazer isso - uma coluna de blob é usada para armazenar dados binários brutos, para que você possa ignorar o processo Base64 e inserir os dados brutos do arquivo.

Se você deseja armazenar imagens em um banco de dados (o que, a propósito, eu pessoalmente não gosto de fazer), é melhor armazenar os dados brutos - a codificação Base64 dos dados os torna maiores e significa que eles devem ser decodificados antes a imagem é renderizada, o que adiciona sobrecarga de processamento.

É assim que você pode inserir os dados binários brutos (assumindo a extensão 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);

Se você realmente deseja codificá-lo pelo Base64 (nesse caso, ele pode ser armazenado em um varchar), basta adicionar uma chamada 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);
20
DaveRandom