• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

filip_e

Sistema de upload de arquivos

75 mensagens neste tópico

Sistema de upload de arquivos

Este tutorial tem como meio, explicar como fazer upload de arquivos para o servidor, está simples...

Crie um arquivo chamado upload.htm com o seguinte:

<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 object file, faz aparecer aquelas janelinhas de escolher os arquivos! no enctype pode especificar, sendo imagens jpg, gif, arquivos exe, como desejar!

Crie um arquivo chamado upload.php com o seguinte código:

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

$mandar = $destino."/".$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.htm\">Clique aqui</a>"
?>

Explicando cada função e cada variável:

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 imprimirá a mensagem de erro, caso não, irá imprimir uma mensagem de OK!

Agora preguntam, como eu exibo o arquivo que o user me mandou?

É muito simples, é só colocar este código no final da página:

echo "O arquivo enviado foi este: $file";

Ps: É necessario dar CHMOD 777 na pasta de destino no servidor!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

que se pode dizer???

Tá xelent... continua assim  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ya o filip_e é o nosso homem dos tutoriais....

Faz tutoriais de todas as linguagens sobre todas as coisas...

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tutorial porreiro, mas creio que faltam ai umas coisas na ultima linha, mais propriamente caracteres de escapatória a ultima linha deve ficar algo como

echo "Quer enviar mais arquivos? <a class=\"link\" href=\"upload.htm\">Clique aqui</a>"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estive a ler e etnho duas perguntas :

1º Que devo acrescentar se, antes de se colocar algum arquivo através de um ipload, o membro se tiver de registar com nome, senha, etc, etc....

Sei que a resolução para esta questão é algo complicada, mas expliquem-me que eu faço...

2º Que devo fazer para construi­r uma ligação desse site a uma base de dados alojada no meu pc? (já uso o programa do satanuke por isso tanto o site como a db vão ficar armazenados aqui no meu pc....)

Fiquem bem B)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ora bem, para isso deverias ter uma base de dados com os utilizadores registado, seja em ficheiros, numa BD MySQL, etc...Depois tens que validar o user no acto de login. Para mim isto já é uma coisa muito á frente porque nunca fiz nada do genero em PHP. Mas creio deve haver por aqui algum user que seja capaz de te ajudar mais nisto...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpem a profunda ignorancia mas...

Ps: É necessario dar CHMOD 777 na pasta de destino no servidor!

o que é isto ? e como se faz ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpem a profunda ignorancia mas...

Ps: É necessario dar CHMOD 777 na pasta de destino no servidor!

o que é isto ? e como se faz ?

Provavelmente o servidor é Unix Based para estarem a dizer isso, pois chmod é um comando que dá permissões aos ficheiros e directórios nos sistemas unix (mac, gnu/linux incluídos).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom tutorial, estava mesmo a precisar de uma cena dessas XD Thnks...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpem a profunda ignorancia mas...

Ps: É necessario dar CHMOD 777 na pasta de destino no servidor!

o que é isto ? e como se faz ?

Provavelmente o servidor é Unix Based para estarem a dizer isso, pois chmod é um comando que dá permissões aos ficheiros e directórios nos sistemas unix (mac, gnu/linux incluídos).

e como é que se faz isso? já agora é assim, o meu site é www.jeg.addyour.net eu fix um upload.php assim:

<?php
$var = $_GET["action"];
switch ($var){
case "enviar":

$destino = "/Uploads"; //Pasta onde serão armazenados os uploads

$mandar = $destino."/".$file_name;
if(!move_uploaded_file($file, $mandar)) {
   echo "O arquivo nÃo pode ser enviado!";
}
else {
   echo "O arquivo foi enviado!";
   echo "O arquivo enviado foi este:". $file;
}
echo'Quer enviar mais arquivos? <a class="link" href="uploads.php">Clique aqui</a>';

	break;

default:
?>
 <form action="Uploads.php?action=enviar" method="POST" enctype="multipart/form-data">
Arquivo: <input type="file" name="file"><br>
<input type="submit" value="Enviar">
</form>
<?php
break;
};

?>

eu criei a pasta Uploads ficando assim no meu ftp: Public_html/Uploads/*e aqui ficariam as imagens...

e dá-me um erro :S

Warning: move_uploaded_file(): open_basedir restriction in effect. File(/Uploads/50_Cent_Bulletproof_Dvd_pal-front.jpg) is not within the allowed path(s): (/home/jegd:/usr/lib/php:/usr/local/lib/php:/tmp) in /home/jegd/public_html/Uploads.php on line 14

O arquivo não pode ser enviado!Quer enviar mais arquivos? Clique aqui

line 14:

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

e já agora, eu nao posso dar um nome à minha escola no fixeiro? e outra coisa, no upload.php que tu fizest, onde é que ele recebe o conteudo das variaveis? nao devia ter um $file_name = $_POST["file"];

Por exemplo.... Cumps..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já confirmas-te as permições?

Já confirmas-te se por exemplo

$mandar = $destino."/".$file_name;

aqui a variavel $mandar assume MESMO bem o que é suposto assumir? Confirma minusculas/maiusculas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já confirmas-te as permições?

Já confirmas-te se por exemplo

$mandar = $destino."/".$file_name;

aqui a variavel $mandar assume MESMO bem o que é suposto assumir? Confirma minusculas/maiusculas.

o problema é por permissão :S que eu nao sei :S

A cena que dá é isto:

Warning: move_uploaded_file(): open_basedir restriction in effect. File(/usersimages/numb.gif) is not within the allowed path(s): (/home3/freemind:/usr/lib/php:/usr/local/lib/php:/tmp) in /home3/freemind/public_html/Uploads.php on line 9

O arquivo nÃo pode ser enviado!Quer enviar mais arquivos? Clique aqui

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Ps: É necessario dar CHMOD 777 na pasta de destino no servidor!

como e que eu posso fazer isto??? e que com a explicação que deram eu n entendi.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Ps: É necessario dar CHMOD 777 na pasta de destino no servidor!

como e que eu posso fazer isto??? e que com a explicação que deram eu n entendi  :wallbash:

lol, liga-te ao teu servidor via ftp, e depois clique com o botao do lado direito em cima duma paasta, e aaxo k tem lá qualquer cena de opções, e tem cenas do tipo, write, read, etc.. ve se encontras, e depois poes um visto em todos, que vai ficar um CHMOD 777 :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e se eu tiver o server no meu pc???

pois assim, ja nao sei, mas deve dar para entrar por ftp na mesma xD lol mete ip, host: localhost

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e se eu tiver o server no meu pc???

deves ter que ir à pasta do servidor no teu pc e alterar as permissões...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pq eu nao consigo por isso a funcionar?? Aparece-me sempre "Nao foi possivel enviar o arquivo"

file onde aparece o form

<form action="content/fotos/upload.php" method="POST" enctype="multipart/form-data">
 <table width="200" border="0" cellpadding="3" cellspacing="0" align="center">
   <tr>
     <td colspan="2" background="images/barra.jpg"><span class="style1">Nova Foto </span></td>
   </tr>
   <tr>
     <td bgcolor="#CCCCCC"><p class="style3">Nome:</p></td>
     <td bgcolor="#CCCCCC"><input type="text" name="name"></td>
   </tr>
   <tr>
     <td bgcolor="#CCCCCC"><span class="style3">Foto:</span></td>
     <td bgcolor="#CCCCCC"><input type="file" name="file_name"></td>
   </tr>
   <tr>
     <td bgcolor="#CCCCCC"><input name="submit" type="submit" value="Enviar"></td>
     <td bgcolor="#CCCCCC"><input name="reset" type="reset" value="Apagar"></td>
   </tr>
 </table>
</form>

file upload.php

$destino = "../../../imagens/galeria"; //Pasta onde serão armazenados os uploads

$file_name = $_POST["file_name"];

$send = $destiny."/".$file_name;
if(!move_uploaded_file($file_name, $send)) {
 echo "O arquivo não pode ser enviado!";
}
else {
 echo "O arquivo foi enviado!";
}

?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tenho o servidor em casa usando windows.

easy php 1.8 com tudo updatado..

o problema é que eu mudo as configurações das pastar que estão por defeito em READ ONLY

mas depois, aquilo volta ao mesmo...

é automático. fiz isso umas 20 vezes seguidas e reboot e outra vez e nada... fonix..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas!

Em resposta ao rgcouto, não estás a conseguir porque no ficheiro upload.php a variável da path não corresponde á que tens depois.

Primeiro tens

$destino

e depois

$destiny

Agora aconselho vivamente a não utilizarem este código para uploads do público, ponham o código dentro de uma pasta bem protegida com .htpassw e htaccess, pois a simplicidade do código pode trazer-vos surpresas desagradáveis...

Para quem trabalhar com Unix em localhost, uma opção a utilizarem FTP para atribuirem as permissões será a função mkdir();

Algo tipo:

<?php

$destino = "caminho/pasta_a_criar";
if (mkdir($destino, 0777))
echo "Pasta criada com sucesso.";
else
echo "Não foi possível criar a pasta";

?>

Assim já vão conseguir dar as permissões necessárias, mas certefiquem-se que a pasta ainda não existe antes de correr o script!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

so uma coisa perante isto tudo podiam me facultar ou explciar como faco depois um apagina ke mostre todos os fixeiros ke foram enviados po servidor???

outtra duvida eu fix como tava no primeiro post os codigos tal e kal como meteram e da isto apos o upload

Warning: move_uploaded_file(/destino/Future logo.jpg): failed to open stream: No such file or directory in /home/www/thethe72.freehostia.com/upload.php on line 13

Warning: move_uploaded_file(): Unable to move '/tmp/phpOUVdgS' to '/destino/Future logo.jpg' in /home/www/thethe72.freehostia.com/upload.php on line 13

O arquivo não pode ser enviado!

ajudem me

lol

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora