Fazendo upload e armazenamento de arquivos usando PHP, parte 1, por Jo�o Seabra
Conhe�a o Plugfeed | � In�cio � Desenvolvimento � Fazendo upload e armazenamento de arquivos usando PHP, parte 1
Avalia��o: | Publicado em: 24/09/2006
Fazendo upload e armazenamento de arquivos usando PHP, parte 1
Jo�o Seabra Programador em PHP h� mais de 3 anos, foi oficial do Ex�rcito e hoje trabalha em Bras�lia - DF.
Fazendo upload e armazenamento de arquivos usando PHP, parte 1O UploadN�o vou me deter muito nesta parte, pois s�o utilizadas fun��es nativas do PHP. Para os iniciantes, estou mandando em anexo o Upil�ader Super Mega Pr� Plus com Sistema Bleach Tabajara, desenvolvido pelo meu amigo Z� de Paula, com algumas altera��es realizadas por mim.O Campo BLOBBLOB (Binary Large Object � Grande Objeto Bin�rio), nada mais � que um campo TEXT, case-sensitive, utilizado para armazenar arquivos bin�rios.No MySQL s�o divididos em 4 tipos: TINYBLOB � armazena at� 256 bytes, ou seja, 255 caracteres mais 01 de controle; BLOB � armazena at� 64 KB, ou seja, 16.535 caracteres mais 02 de controle; MEDIUMBLOB � armazena at� 16MB bits, ou seja, 16.777.216 caracteres mais 03 de controle; LONGBLOB � armazena at� 4GB, ou seja, 4.294.967.295 caracteres mais 04 de controle;Executando o INSERT em um campo BLOBAgora que j� conhecemos os campos BLOB, vamos ver como utilizamos o comando INSERT com ele:INSERT INTO tabela (id, file) VALUES (1, LOAD_FILE("/tmp/file.gif"));O que muda de um INSERT normal � o comando LOAD_FILE, o qual dever� ser dado no arquivo que deseja ser inserido no banco. O comando far� a codifica��o do arquivo file.file num formato intelig�vel, por exemplo, base64, para o MySQL para a tabela. Neste caso, o caminho do arquivo deve ser dado por completo, por exemplo: /tmp/file.gif ou c:/tmp/file.gif.Detalhes importantes: Voc� dever� ter permiss�o de escrita e leitura no arquivo pra poder realizar a inser��o. O tamanho do arquivo tamb�m n�o poder� exceder a vari�vel de ambiente max_allow_packet, caso contr�rio ser� inserido NULL.Executando o SELECT em um campo BLOBJ� conhecemos como fazemos a inser��o no MySQL. Vamos verificar agora como usamos o comando SELECT:SELECT file INTO OUTFILE �/dir/file.file� FROM tabela WHERE id = 1;O que muda de um SELECT normal � o comando INTO OUTFILE que far� a codifica��o do arquivo bin�rio no diret�rio �/dir�. Importante ressaltar que voc� tamb�m dever� ter permiss�o de leitura e escrita nesse diret�rio.Outra ressalva seria que n�o adianta tentar fazer essa SELECT, tentando visualizar o arquivo dentro do DB, pois o mesmo n�o conseguir� retornar o arquivo propriamente dito e sim criar� um arquivo dentro do diret�rio especificado.Desvantagens:LENTID�O � Haver� uma demora desnecess�ria para a p�gina ser carregada, pois a imagem s� ser� enviada para o cliente ap�s criada no diret�rio.BURACOS � O campo BLOB assim com o campo TEXT n�o realiza a elimina��o dos espa�os vazios cont�guos no final do campo. Por exemplo: Se um arquivo estiver sendo carregado em um campo LONGBLOB e tiver 16.535 caracteres (o tamanho de um campo BLOB) ir� �sobrar� 4.294.950.760 caracteres, ou seja, praticamente o campo todo ficar� vazio. Ou seja, o arquivo ocupar� mais espa�o no HD que o necess�rio.Vantagens:BUSCA DE CONTE�DO � Como o arquivo estar� em formato bin�rio, ficar� muito mais simples realizar a busca de um conte�do determinado.GERENCIAMENTO � Voc� n�o precisa se preocupar com permiss�o de diret�rios, nem com seguran�a. Isso � provido pelo banco de dados.Bom, por enquanto � s�, pessoal!Qualquer d�vida � s� publicar a� embaixo!
upiloader.php
Reges <regesbb@gmail.com>
Me desculpe mas esse tamanho em BITS que você colocou nos campos BLOB esão incorretas... consulte o manual do MySQL Vitor Fernando Pamplona <vitor@babaxp.org>
Bom mesmo João Seabra <johnnyseabra@gmail.com>
Realmente não tinha conferido esse dado. Obrigado por corrigí-lo. TINYBLOB = 256Bytes; BLOB 64kB; MEDIUMBLOB = 16MB; LONGBLOB = 4GB.
Estarei corrigindo-o agora! beto <muserv05@yahoo.com.br>
ou eu qro saber come q faz pra ospedar imagen no site q fiz no vai.la muaff.vai.la come kara me manda um email e me fala oks desconhecido
Cara, entra em ctt a admin do site. Daniel <danielsimoescp@hotmail.com>
gostaria de informcoes ,, estou baixando filmes e ta vindo arquivo .php e sao duas partes dois arquivos ...como torna-lo pronto pra ver ..??favor manda pro email...obrigado... Thiago Medeiros <infovirtual@gmail.com>
Bem, eu tenho uma duvida basica: Como fazer para eu upar arquivos no mysql, so que ao invés de usar o blob, gostaria apenas de linkar o nome desse arquivo a sua pasta de destino, assim ficaria melhor e mais facil a busca e os recursos no hd. Se poder ajudar mais ainda, gostaria de saber sobre recursos de redimensionamento de imagens atribuidos ao php, e em seguida postagem no banco de dados mysql. Ex: upei foto.jpg, ela tem 800x600 pixels de tamanho, a biblioteca do php passa para 640x480, e em seguida eu jogo no banco de dados linkado. Como proceder ? Adilson <adilson.rr@gmail.com>
ao artigo é bom .Mais queria fazer algo q facilitace a area de ti principalmente a intranet gerando uma pagina em php onde poderia postra as imagem e os link direto da pagia da web Jo�o Seabra Todas as mat�rias deste colunista Sobre o Autor: Jo�o Seabra Programador em PHP h� mais de 3 anos, foi oficial do Ex�rcito e hoje trabalha em Bras�lia - DF.