Jump to content


Photo

Uploader::submit()


  • Faça o login para participar
13 replies to this topic

#1 rEd nEcK *

rEd nEcK *

    |̲̅<̲̅Θ̲̅>̲̅|

  • Usuários
  • 164 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 06/05/2006, 14:53

Classe para uploadar arquivos, com algumas validações

<?php

#################################
# #
# Uploader v1.0 #
# Developed by: rEd nEcK * #
# #
#################################

class Uploader{
var $maxsize, $error, $file, $path;
var $validtype = Array(
"image/bmp",
"image/gif",
"image/jpeg",
"image/pjpeg",
"image/png",
"image/x-png",
"image/tiff",
"audio/mpeg",
);
function Uploader($file,$path="Uploads/"){
$this->file = $file; $this->path = $path;
$this->maxsize = (int) ini_get('upload_max_filesize')*1024*1024;
}
function CheckFile(){
if( !file_exists($this->path."/".$this->file["name"]) ){
$this->error = 0;
return true;
}else{
$this->error = 'O arquivo ['.ucwords($this->file["name"]).'] já existe.';
return false;
}
}
function CheckType(){
if( in_array($this->file["type"],$this->validtype) ){
$this->error = 0;
return true;
}else{
$this->error = 'Tipo do arquivo ['.ucwords($this->file["name"]).'] invalido.';
return false;
}
}
function CheckSize(){
if( $this->file["size"] < $this->maxsize ){
$this->error = 0;
return true;
}else{
$this->error = 'O arquivo ['.ucwords($this->file["name"]).'] é muito grande.';
return false;
}
}
function UploadIt(){
if( !$this->CheckFile() ) return false;
if( !$this->CheckType() ) return false;
if( !$this->CheckSize() ) return false;
move_uploaded_file($this->file["tmp_name"],$this->path."/".strtolower($this->file["name"]));
return true;
}
}

function UploadFiles(){
foreach($_FILES as $k=>$v){
if( !empty($_FILES[$k]["name"]) ){
$upload = new Uploader($_FILES[$k]);
if( !$upload->UploadIt() ){
echo "Erro interno: ".$upload->error;
return false;
}
}
}
return true;
}

?>


Modo de usar:

<?php
if( isset( $_GET["Submit"] ) ){
if( UploadFiles() == false ){
echo '<br/><br/><a href="java script:history.go(-1);">Voltar</a>';
}else{
echo '<script type="text/javascript">';
echo ' alert(" Upload Completo. ");';
echo ' window.close();';
echo '</script>';
}
}else{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title> Upload::System </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<table width="100%" height="100%" align="center">
<tr>
<td>
<form action="?Submit" method="post" enctype="multipart/form-data">
<table width="100%" border="0">
<tr>
<td align="center"><font size="4" face="Verdana, Arial, Helvetica, sans-serif">Upload</font></td>
</tr>
<tr>
<td width="50%"><input name="upload00" type="file" id="upload00"></td>
</tr>
<tr>
<td><input name="upload01" type="file" id="upload01"></td>
</tr>
<tr>
<td><input name="upload02" type="file" id="upload02"></td>
</tr>
<tr>
<td><input name="upload03" type="file" id="upload03"></td>
</tr>
<tr>
<td><input name="upload04" type="file" id="upload04"></td>
</tr>
<tr>
<td><input name="uploadGo" type="submit" id="uploadGo" value="Upload It !"></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</body>
</html>
<?php
}
?>


Para adicionar mais campos é só ir adicionando:

<input name="upload0x" type="file" id="upload0x">

PS: trocar o X pelo numero correspondente, ex: o ultimo campo é o upload04, então o proximo será upload05, e assim por diante
PS2: o destino padrão é a pasta atual /Uploads, para alterar isso, basta modificar o que está em vermelho

Qualquer duvida só perguntar,
Abraços

Edição feita por: rEd nEcK *, 06/05/2006, 14:58.

~/ ArrastoMemo.Com - Porque ganhar não é tudo, tem que humilhar o adversário /~

#2 Microbyte

Microbyte

    12 Horas

  • Usuários
  • 204 posts
  • Sexo:Não informado

Posted 22/05/2006, 17:49

fiz tudo certinho, mas quando testei no servidor definitivo, não faz o upload! Porque será?

#3 GCTS

GCTS

    Super Veterano

  • Usuários
  • 278 posts
  • Sexo:Masculino

Posted 04/06/2006, 02:42

já viu se a pasta-destino dos arquivos tem CHMOD 777 (permissão pra escrita, leitura, etc.) ??

Edição feita por: FelipeBSR, 04/06/2006, 02:42.


#4 gennf

gennf

    A Solução está ai...

  • Usuários
  • 645 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG

Posted 05/06/2006, 22:23

Como eu devo fazer pra que uma variável seja aceita aqui dentro??

function Uploader($file,$path="fotos/".$anuncio."/")

Dessa forma está sendo emitido o erro:

Parse error: parse error, unexpected '.', expecting ')' in C:\Inetpub\wwwroot\projeto\anuncio_inserir_foto.php on line 40


Tentei tambem assim:

function Uploader($file,$path="fotos/$anuncio/")

Dessa forma é emitido o seguinte erro:

Parse error: parse error, unexpected '"' in C:\Inetpub\wwwroot\projeto\anuncio_inserir_foto.php on line 40


Aguardo respostas ;)

Walison(GENNF)
Portal BatePapoBrasil
URL: www.batepapobrasil.com

----------------------------
Site desenvolvidos
URL:
VitrineABC :: Alugue Litoral :: OrtodontiaLago

#5 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 07/06/2006, 21:07

já esperimentou assim:

function Uploader($file,$path="fotos/anuncio/")


Falopa!

#6 gennf

gennf

    A Solução está ai...

  • Usuários
  • 645 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG

Posted 07/06/2006, 21:57

Assim é muito simples não acha???

Mas o problema é que em cada momento poderá ser uma pasta diferente, como por exemplo:

fotos/pasta1/

fotos/pasta2/

fotos/pasta3/

E assim por diante. Então, nem sepre será a mesma pasta o destino das imagens.

Até mais ;)

Walison(GENNF)
Portal BatePapoBrasil
URL: www.batepapobrasil.com

----------------------------
Site desenvolvidos
URL:
VitrineABC :: Alugue Litoral :: OrtodontiaLago

#7 rEd nEcK *

rEd nEcK *

    |̲̅<̲̅Θ̲̅>̲̅|

  • Usuários
  • 164 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 08/06/2006, 10:48

Opa, gennf

Otima pergunta ! Realmente nisso eu não tinha pensado, então no caso fica um pouquinho mais complicado....

o $path é um parametro e dentro de um parametro não pode usar uma variavel =/, o "/Uploads" é o valor padrão, pórem pode ser alterado se você mandar um novo parametro quando chamar a função

Ficou ruim minha explicação :P, eu não sou muito bom para explicar, mais vou mostrar que fica mais facil...

function UploadFiles(){ // Essa é a função que faz 1 por 1 upload
foreach($_FILES as $k=>$v){
if( !empty($_FILES[$k]["name"]) ){
$upload = new Uploader($_FILES[$k],'/Uploads/'.$variavel); // assim daria certo :D
if( !$upload->UploadIt() ){
echo "Erro interno: ".$upload->error;
return false;
}
}
}
return true;
}


É ali que teria que modificar nesse caso... Só que vale lembrar também que não da para usar uma variavel de fora dentro de uma função

Por ex:

<?php

$var = 'test';
function Testing(){
echo $var;
}

?>


Isso daria erro... teria que usar um "truque"

<?php

$var = 'test';
function Testing(){
global $var;
echo $var;
}

?>


É isso, qualquer duvida só perguntar, e desculpa ai se eu não fui muito esclarecedor =/
Abraços

Edição feita por: rEd nEcK *, 08/06/2006, 10:49.

~/ ArrastoMemo.Com - Porque ganhar não é tudo, tem que humilhar o adversário /~

#8 gennf

gennf

    A Solução está ai...

  • Usuários
  • 645 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG

Posted 08/06/2006, 13:24

Que isso cara!!! Brigadão!!!

Estou a alguns dias esperando sua resposta porque fui obrigado a parar o meu projeto por causa disso :P

Ia começar hoje a montar um novo sistema de Upload, ainda bem que vc postou sua resposta logo cedo.

Muito obrigado!!!

Assim que eu chegar em casa vou ver se faço funcionar.


==========EDITANDO==========

Cara...!!!

Não consegui fazer funcionar.

Qual será o problema???

function UploadFiles(){ // Essa é a função que faz 1 por 1 upload
global $anuncio2;
foreach($_FILES as $k=>$v){
if( !empty($_FILES[$k]["name"]) ){
$upload = new Uploader($_FILES[$k],'fotos/'.$anuncio2); // assim daria certo
if( !$upload->UploadIt() ){
echo "Erro interno: ".$upload->error;
return false;
}
}
}
return true;
}

Até mais ;)

Walison(GENNF)

Edição feita por: gennf, 08/06/2006, 17:17.

Portal BatePapoBrasil
URL: www.batepapobrasil.com

----------------------------
Site desenvolvidos
URL:
VitrineABC :: Alugue Litoral :: OrtodontiaLago

#9 rEd nEcK *

rEd nEcK *

    |̲̅<̲̅Θ̲̅>̲̅|

  • Usuários
  • 164 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 09/06/2006, 11:42

Opa

Aparentimente está certo =/

Retorna algum erro ?

Tem que ir debugando para ver o que ta acontecendo, por ex:

global $anuncio2;
echo $anuncio2;


Abraços
~/ ArrastoMemo.Com - Porque ganhar não é tudo, tem que humilhar o adversário /~

#10 gennf

gennf

    A Solução está ai...

  • Usuários
  • 645 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG

Posted 09/06/2006, 16:47

Não Retorna erro, mas os arquivos tambem não vão para a pasta que deveria ir :(

Tentei colocar na class, coloquei em todas as funções da class e tambem nada. :(

Porque ser???? :(

Aguardo sua ajuda ;)

Até mais (y)

(y)
Portal BatePapoBrasil
URL: www.batepapobrasil.com

----------------------------
Site desenvolvidos
URL:
VitrineABC :: Alugue Litoral :: OrtodontiaLago

#11 kmaster

kmaster

    Turista

  • Usuários
  • 29 posts
  • Sexo:Masculino

Posted 20/08/2006, 14:19

Feras de Plantão,
Como faria para aparecer a uma barra do progresso do arquivo sendo upado?
Que mostrasse, 10% 20% 50% 70% 100% ou algo parecido...

OBrigado pela ajuda...

#12 Luiz Ricardo Guimarães

Luiz Ricardo Guimarães

    Novato no fórum

  • Usuários
  • 21 posts
  • Sexo:Não informado

Posted 05/09/2006, 10:46

Presciso disso galera:


:D Repasse o codigo completo acima adicionando um campo que a pessoa escolhe quantos

(y) <input name="uploadx" type="file" id="uploadx">

#13 bimonti

bimonti

    Super Veterano

  • Usuários
  • 2654 posts
  • Sexo:Masculino

Posted 06/09/2006, 09:17

Nomeia o campo como uma matriz e usa JavaScript+DOM pra ir adicionando dinamicamente os campos. Depois é só manda um foreach na página receptiva ... (y)

Edição feita por: bimonti, 06/09/2006, 09:31.

WebFórum - Equipe de Desenvolvimento - Monitor
Posted Image
Yeah I do have some stories, and it's true I want all the glory ...

#14 CaRLo

CaRLo

    12 Horas

  • Usuários
  • 130 posts
  • Sexo:Masculino
  • Localidade:Pelotas/RS
  • Interesses:HTML, CSS, jQuery, PHP, MySQL, Fireworks

Posted 24/09/2006, 18:00

E como eu faço para mostrar o nome do arquivo

tipo:
"Arquivo X enviado com sucesso"

Tentei algumas coisas aqui mas não consegui =T
Hospedagem: www.HostSul.Com
Hospedagem Linux, Hospedagem Windows, Revenda de Hospedagem e Registro de domínios. Servidores EUA e BR.

"É melhor calar-se e deixar que as pessoas pensem que VOCÊ é um idiota do que falar e acabar com a dúvida."




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq