Sistema de Upload de Arquivos em PHP

Started by tiaguito-.-, 02 de October , 2006, 09:02:08 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

tiaguito-.-

Primeiro insira um upload.htm com o código:
<html>
<body>
<form action="upload.php" method="POST" enctype="multipart/form-data">
Arquivo: <input type="file" name="file"><br>
<input type="submit" value="Enviar">
</form>
</body>
</html>

Explicando, aqui é um simples formulário, em que, este objeto file, faz apaecer aquelas janelinha de escolher os arquivos! no enctype você pode especificar, sendo imagens jpg, gif, arquivos exe,como desejar!

2º Crie um arquivo chamado upload.php com o seguinte código:
<?php
$destino 
"/destino"//Pasta onde serão armazenados os uploads

$mandar $destino&#46;"/"&#46;$file_name;
if(!move_uploaded_file($file$mandar)) {
   echo 
"O arquivo não pode ser enviado!";
}
else {
   echo 
"O arquivo foi enviado!";
}
echo
"Quer enviar mais arquivos? <a class="link" href="upload&#46;htm">Clique aqui</a>"
?>

Explicando cada função e cada variavel:
Amigos, a variável $destino esta armazenando o destino para onde será enviado o arquivo
A variável $mandar está encarregada de colocar o destino e o nome do arquivo, então ficaria assim: /destino/filename.extensão

if(!move_uploaded_file($file, $mandar)) {

Esta parte ja mostra que se, acontecer de que move_uploaded_file($file, $mandar)
for igual a 0, que significa false, ela imprimiá a mensagem de erro, caso não, irá imprimir uma mensagem de OK!

Agora você me pergunta, como eu exibo o arquivo que o usuário me mandou?
É muito simples, é so coclocar este código no final da´página:
echo "O arquivo enviado foi este: $file";
Assim, você imprimirá o arquivo que ele enviou!
Obs: É necessario dar CHMOD 777 na pasta de destino no servidor!

Fonte:http://www.webtutoriais.com/open.php?cut=1587 by Guilherme Lizardo

só tive o trabalho de procura e ajeitar aqui =)

^.-
Não tenho medo do escuro, nem do que tem nele, medo do escuro é pra fracos, e vc é um?
Meu MSN ta ali, se quiser add, add mais nun fala bosta não =P

#phobia

Pow, muito bom velho...

Tava atras disso, um cliente meu pediu pra fazer um esquema desse ai no site dele...
Enfim, muito bom.

Vou testar aqui assim que tiver tempo.

vlw velho!!!  ;)

vuln

Muito bom o tópico. O autor cuidou de explicar bem o código o que favoreceu a aprendizagem de noviços e ainda deu maior qualidade ao contexto em si do tutorial. Só fez achar e ajeitar mas achou um bom em? ;) parabéns.

Abraços
"O amor por princípio, a Ordem por base, o progresso por objetivo."

cecla

Muito interessante mesmo, um script bem simples mas já podemos começar a implementá-lo.

Vejamos algumas características:

type = extensao;
size = tamanho;
getimagesize = para definir dimensões da imagem.

Neste caso a variável $file é uma array e possui as caracteristicas acima.

Vamos ver um exemplo com $file["type"]:

if($file["type"] == "jpg")
{
      echo "O arquivo é um JPG!";
}
else
{

}

cecla

CADE O EDIT?????

rsrsrs

Continuando...

Muito interessante mesmo, um script bem simples mas já podemos começar a implementá-lo.

Vejamos algumas características:

type = extensao;
size = tamanho em bytes no caso 100kb = 100 * 1024 = 102400bytes
getimagesize = para definir dimensões de imagem.

Neste caso a variável $file é uma array e possui as caracteristicas acima.

Vamos ver um exemplo com $file["type"]:

if (!eregi("^image\/(pjpeg|jpeg)$", $file["type"]))
{
      echo "O arquivo não é um JPG!";
}
else
{
      echo "O arquivo é um JPG!";
}

Podemos aplicar o mesmo para o "size".

Agora um exemplo com getimagesize para determinar dimensoes da imagem:

$sizexy = getimagesize($file["tmp_name"]);

// Fazendo isso transformamos a variável $sizexy em uma array:
// $sizexy[0] - largura
// $sizexy[1] - altura

Então, exemplo:

if($sizexy[0] > 640 || $sizexy > 480)
{
      echo "A imagem escolhida ultrapassa os limites de resolução!";
}
else
{
      echo "A imagem escolhida não ultrapassa os limites de resolução!";
}

bom galera é mais ou menos isso ... desculpem os erros!

Obs: Antes de tudo insira a seguinte linha no início do código:

$file = isset($_FILES["file"]) ? $_FILES["file"] : FALSE;

vuln

Inicialmente seja bem vindo(a) Cecla. A equipe de administração do Darkers entrou em um concenso que seria mais lucrativo para o Fórum que ele continuasse sem a função de editar a mensagem, pois os mesmos estavam a se deparar com diversos problemas e irregularidades com vários usuários mal intenciondos do fórum. Eu, como você, também sou novo no fórum e por esse motivo desconheço que acontecimentos foram esses, mas também fui atrás e recebi a mesma mensagem. Por isso, acho que devemos esperar a qualidade dos usuários aumentar até que possamos voltar a ter a confiabilidade de outrora.

Até mais.  ;)
Abraços
"O amor por princípio, a Ordem por base, o progresso por objetivo."


Ðark$pawn

Amigo darkng7br, cuidado com esse tipo de comentário... É flood... ;)

#phobia

Aew, alguém da uma maozinha aki...

Fui testar aqui, mas ta dando erro.
Olha o como está meu upload.php:

<?php
$destino 
"/FILES"//Pasta onde serão armazenados os uploads

$mandar $destino&#46;"/"&#46;$file_name;
if(!move_uploaded_file($file$mandar)) {
   echo 
"O arquivo não pode ser enviado!";
}
else {
   echo 
"O arquivo foi enviado!";
}
?>

OBS: DEI PERMISSÃO 777 NA PASTA FILES (QUE É A PASTA QUE VAI RECEBER OS ARQUIVOS AQUI NO MEU CASO).


ERRO:

Warning: move_uploaded_file(/FILES/arquivo.txt): failed to open stream: No such file or directory in /home/conceica/public_html/upload.php on line 5

Warning: move_uploaded_file(): Unable to move '/tmp/phpyCvENK' to '/LOGS/asdf.txt' in /home/conceica/public_html/upload.php on line 5
O arquivo não pode ser enviado!
Se alguém puder ajudar aew agradeço!  ;)
T+++

rog

realty.sys is corrupt :  reboot the universe (Y/N)

Magrinho Loko

Amigo se o safe_mode estiver habilitado, a função  move_uploaded_file() fica "bloqueada", impossibilitando o upload.

Peguei um exemplo do luis-restart do Fórum Imasters, pessoalmente nunca testei ele, mais deve servir.


O nosso bom e velho amigo upload.php
<?
//Free Software
//Voce pode alterar, adicionar, deletar ou que quiser(0o) com o source-code
//soh se lembre que isto não lhe fará o autor do code hehehe
//se for usar em algo, poe uma citação minha, =p~

//$id = author: Luis Fernando D. Andrade luisfernando_o_22@hotmail.com

// Code pra upar arquivos mesmo com safemode=ON, testado em uma maquina windows e uma linux
// as duas com safe_mode=ON e funcionou 100%
// ta com algumas linhas amais que poderiam ser descastadas...

$path = "./upload"; //sete seu caminho de uploads aqui

//if (empty($_FILES['archive']['tmp_name'])) return_msg("[-]", "Arquivo não pode ser upado!");

$txt_extencion_array = array("txt","php","asp","pl","cgi","c","cpp","jsp","cfm","bat","htm","html","sql","cvs","css");
$bin_extencion_array = array("exe","","com","elf","avi","mpg","gif","jpg","jpeg","png","bmp","swf","doc","pdf","mp3"); //o vazio é para elfs linux que geralmente nao tem extencao. adiciona ai

$file_uploaded_name = $_FILES['archive']['name'];
$file_uploaded_size = $_FILES['archive']['size'];
$file_uploaded_tmp_name = $_FILES['archive']['tmp_name'];
$file_uploaded_extencion = end(explode(".",$file_uploaded_name));

$safemode = ini_get('safe_mode');
if($safemode == 1){
return_msg("[!]","Sistema com safe_mode! Mas não se preocupe, isso não será mais um problema...");
//agora que são elas, LoL...
if(in_array($file_uploaded_extencion,$txt_extencion_array)){ //eH um arquivo plain/text
  $file_uploaded_txt_content = file_get_contents($file_uploaded_tmp_name);
  if(file_exists($path."/".$file_uploaded_name) && !is_writable($path."/".$file_uploaded_name)) return_msg("[-]","Você não tem permissão para gerar um arquivo no servidor!<br>Verifique se a pasta especificada no source-code está com as devidas permissoes."); //ele verifica se existe e se pode sobreescreve-lo
  if(!$file_id = fopen($path."/".$file_uploaded_name, 'w')) return_msg("[-]","Erro ao tentar criar o arquivo.");
  if(!fwrite($file_id, $file_uploaded_txt_content)) return_msg("[-]","Erro ao tentar escrever no arquivo.");
  return_msg("[+]","Upload de arquivo plain/text realizado com sucesso!");
  fclose($file_id);

if(in_array($file_uploaded_extencion,$bin_extencion_array)){ //eH um arquivo binario/executavel
  $file_bin_id = fopen($file_uploaded_tmp_name, 'rb');
  $file_uploaded_bin_content = fread($file_bin_id, $file_uploaded_size);         
  if(file_exists($path."/".$file_uploaded_name) && !is_writable($path."/".$file_uploaded_name)) return_msg("[-]","Você não tem permissão para gerar um arquivo no servidor!<br>Verifique se a pasta especificada no source-code está com as devidas permissoes."); //ele verifica se existe e se pode sobreescreve-lo
  if(!$file_id = fopen($path."/".$file_uploaded_name, 'w')) return_msg("[-]","Erro ao tentar criar o arquivo.");
  if(!fwrite($file_id, $file_uploaded_bin_content)) return_msg("[-]","Erro ao tentar escrever no arquivo.");
  return_msg("[+]","Upload de arquivo binario/executavel realizado com sucesso!");
  fclose($file_id);
}
}else{
return_msg("[!]","Sistema sem safe_mode!");
if(!(move_uploaded_file($file_uploaded_tmp_name, $path."/".$file_uploaded_name))) return_msg("[-]","Erro no upload do arquivo!");
return_msg("[+]","Upload de arquivo realizado com sucesso!");
}

function return_msg($param1,$param2){
switch($param1){
  case "[!]" : echo "<center><h3><tt><font color=red>[!]</font><font color=black> $param2</tt></h3></font></center>\n";break;
  case "[+]" : echo "<center><h3><tt><font color=red>[+]</font><font color=black> $param2</tt></h3></font></center>\n";break;
  case "[-]" : die("<center><h3><tt><font color=red>[-]</font><font color=black> $param2</tt></h3></font></center>\n");break;
}
}
?>

E o nosso amigo  upload.htm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#ffffff" text="#000000" link="#0000cc" vlink="551a8b" alink="#ff0000">

<table width="100%" border=0 cellspacing=0 cellpadding=1>
<tr bgcolor=#ffffff>
<td>
  <div align="center"><tT></tT></div>  <h3 align="center"><font color="#FF0000">[!]</font> Upload</font>
  </h3>
  <form name="form2" method="post" action="upload.php" enctype="multipart/form-data">
    <div align="center">
      <table width="31%"  border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCCCC">
      <tr>
        <td><div align="right">Arquivo:  </div></td>
        <td>
          <input type="file" name="archive">
        </td>
      </tr>
      <tr>
        <td> </td>
        <td>
          <input type="submit" name="Submit" value="Submit">    </td>
      </tr>
      </table>
    </div>
  </form>
</body>
</html>

Qualquer duvida postem neste topico no Imasters
Saudades do antigo Darkers.

#phobia

Vlw a intenção ae Maginho, mas não funcionou.

De qualquer forma, acabei de achar um aqui que funcione blz!
Obrigado.


T+++