Published by Marcio Nakano
Pessoal, como algumas pessoas estavam perguntando como fazia um upload de arquivo e guardando o nome desse arquivo e outros dados num banco de dados, resolvi fazer um script PHP e outro em ColdFusion para demonstrar como se faz.
Não quero entrar em méritos de uma ou outra linguagem, porém com o CF o upload é mais simples, como veremos a seguir.
No CF usaremos a tag “
cffile” (para saber mais sobre essa tag
clique aqui) com o a ação marcada para
action="upload".
Uma opção interessante dessa tag é o “nameconflict”, com ele podemos sobrescrever, devolver mensagem de erro, pular o upload ou mudar o nome do arquivo, caso haja algum arquivo com o mesmo nome.
Iremos deixar “makeunique”, ou seja, se o CF encontrar algum arquivo com o mesmo nome, ele irá acrescentar algo no fim do nome, geralmente o número 1.
No resto do código, usaremos SQL simples para guardar os dados fornecidos por meio do formulário POST e em seguida faremos uma query pegando os dados guardados e mostrando para verificação se o upload foi bem sucedido.
Segue o código CF:
CODE:
-
<cfset imgDone = ''>
-
<cffile action="upload" destination="#ExpandPath('img/')#" filefield="img" nameconflict="makeunique">
-
<cfset imgDone = #File.ServerFile#>
-
<cfquery datasource="#dsn#">
-
INSERT INTO upload (text, img) VALUES (
-
<cfif IsDefined("FORM.text") AND #FORM.text# NEQ ""><cfqueryparam value="#FORM.text#" cfsqltype="cf_sql_clob"><cfelse>''</cfif>,
-
'#imgDone#'
-
)
-
</cfquery>
No PHP existem 2 funções que possibilitam fazer o upload de arquivos: copy() e move_uploaded_file(). Usaremos este último por ser o mais indicado para upload de arquivos feitos pelos usuários.
A função move_uploaded_file() (para saber mais sobre essa função
clique aqui),verifica se é um arquivo válido (se ele foi carregado pelo PHP), se o arquivo é válido, ele será movido para o destino informado.
Segue o código PHP:
CODE:
-
//Definindo a pasta para onde irá os arquivos do upload
-
$uploaddir = 'img/';
-
-
//Mostrando alguns parametros da imagem
-
echo "<pre>";
-
if (move_uploaded_file($_FILES['img']['tmp_name'], $uploaddir.$_FILES['img']['name'])) {
-
echo "O arquivo é valido e foi carregado com sucesso. Aqui esta alguma informação:\n";
-
print_r($_FILES);
-
$insertSQL = sprintf("INSERT INTO upload (text, img) VALUES (%s, %s)",
-
GetSQLValueString($_POST['text'], "text"),
-
GetSQLValueString($_FILES['img']['name'], "text"));
-
echo "<br />Segue o comando SQL:<br />";
-
echo $insertSQL."<br />";
-
mysql_select_db($database_conexao, $conexao);
-
$Result1 = mysql_query($insertSQL, $conexao) or die(mysql_error());
-
} else {
-
echo "Erro ao fazer o upload! Aqui esta alguma informação:\n";
-
print_r($_FILES);
-
print_r($_POST);
-
}
-
echo "</pre>";
Lembrando que este é um script simples e que você pode fazer ainda muito mais com as imagens. A partir do CF8 existe uma tag que você pode manipular as imagens, redimensionando, fazendo crop etc que é a tag cfimage.
No PHP as funções mais usadas para manipular imagens são
getimagesize,
imagecreatefromjpeg,
imagejpeg,
imagedestroy etc. Essas funções são da biblioteca GD, ou seja, seu servidor deve ter essa biblioteca instalada para funcionar, veja a lista completa das funções
aqui.
Descompacte os arquivos e crie uma base com o nome “teste”, em seguida rode o SQL do arquivo db.sql dentro da base criada.
Caso tenham dificuldade, tentem até conseguir, pois acredito que aprendemos somente quando passamos por dificuldades. Leve estes scripts como exemplo e tente fazer um upload da sua maneira.
Um abraço, Marcio Nakano.
. nov 23, 2008
Arquivado em: Tecnologia, Tutoriais, CF, ColdFusion, MySQL, PHP, Tecnologia, upload