Ir para conteúdo
Fórum Script Brasil
  • 0

upload de imagem


Gel

Pergunta

PRezados amigos, encontrei um codigo que deveria fazer tudo o que eu queria, porém ele não está funcionando. O que o script deveria fazer, criar uma pasta com o nome da pessoa e enviar as imagens para essa pasta. Exemplo: http://www.meusite.com.br/afotos/XXXX Onde a pasta afotos seria a pasta PADRÃO e o XXX seria ostras pastas a serem criadas dentro do diretorio padrão. Segue o script para analise.

upload_fotos.php

<form action="upload.php" method="post" ENCTYPE="multipart/form-data">

<p align="center"><font size="4" face="Verdana" color="#CCCCCC">

<b><font color="#FF0000">UPLOAD DE ARQUIVOS</font></b></font></p>

<table width="200" border="1" align="center" bordercolor="#FFFFFF">

<tr>

<td border="1" bordercolor="#999999"><table width="401" border="0" align="center" cellspacing="1" cellpadding="1">

<tr bgcolor="#E1E1E1">

<td bgcolor="EFEFEF"><div align="center"><font size="2" face="Verdana">Diret&oacute;rio</font></div></td>

<td bgcolor="#FFFFFF"><input type="radio" name="select_dir" value="diretorio" checked></td>

<td bgcolor="#FFFFFF"><select name="diretorio" size="1">

<option value="upload" selected>Padrão</option>

<option value="geral">geral</option>

<option value="Pessoal">Pessoal</option>

</select></td>

</tr>

<tr bgcolor="#E1E1E1">

<td nowrap bgcolor="EFEFEF"><div align="center"><font size="2" face="Verdana">

Outro diretório</font></div></td>

<td bgcolor="#FFFFFF"><input type="radio" name="select_dir" value="diretorio2"></td>

<td bgcolor="#FFFFFF">

<input type="text" name="diretorio2" size="24"></td>

</tr>

<tr bgcolor="#E1E1E1">

<td bgcolor="#EFEFEF"><div align="center"><font size="2" face="Verdana">Arquivo</font></div></td>

<td bgcolor="#FFFFFF">&nbsp;</td>

<td bgcolor="#FFFFFF"><input type="file" size=30 name="file"></td>

</tr>

<tr bgcolor="#EFEFEF">

<td colspan="3"><div align="center">

<input type="submit" value="Enviar" name="submit">

</div></td>

</tr>

</table> </td>

</tr>

</table>

<input type="hidden" name="MAX_FILE_SIZE" value="1000000">

<br>

</form>

<br>

<table width="30%" border="1" align="center" bordercolor="#FFFFFF">

<tr>

<td bordercolor="#CCCCCC">&nbsp;</td>

</tr>

</table>

upload.php

<?php

// Altera o umask para a criação do diretório

$umask_anterior = umask(0);

if ($_FILES["file"]["error"] === 0)

{

@ mkdir($_POST["{$_POST["select_dir"]}"],0777);

@ move_uploaded_file($_FILES["file"]["tmp_name"],"./{$_POST["{$_POST["select_dir"]}"]}/{$_FILES["file"]["name"]}");

?>

<script>

window.alert('Arquivo Enviado com Sucesso !');

</script>

<?

}

else

{

switch ($_FILES["file"]["error"])

{

case 1:

$msg_err = "O arquivo no upload é maior do que o limite \ndefinido em upload_max_filesize no php.ini!";

break;

case 2:

$msg_err = "O arquivo ultrapassa o limite de tamanho em \nMAX_FILE_SIZE que foi especificado no formulário!";

break;

case 3:

$msg_err = "O upload do arquivo foi feito parcialmente!";

break;

case 4:

$msg_err = "Não foi feito o upload do arquivo. Tente novamente!!!";

break;

default:

$msg_err = "Ocorreu um erro.\nVerifique qual o problema!!!";

}

?>

<script>

window.alert('<?=$msg_err?>');

history.back();

</script>

<?

umask($umask_anterior);

}

?>

<HTML>

<HEAD>

<TITLE>UPLOAD</TITLE>

<style type=text/css">

<!--

.style1 {

font-family: Verdana, Arial, Helvetica, sans-serif;

font-size: 10px;

}

a:link {

color: #000000;

text-decoration: none;

}

a:visited {

text-decoration: none;

color: #000000;

}

a:hover {

text-decoration: none;

color: #000000;

}

a:active {

text-decoration: none;

color: #000000;

}

.style2 {

font-family: Verdana, Arial, Helvetica, sans-serif;

font-size: 10px;

font-weight: bold;

}

.style3 {color: #FF0000}

-->

</style>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></HEAD>

<BODY>

<H1 align="center" class="style1 style3"><span style="font-size: 9pt">Arquivo Enviado Com Sucesso!</span></H1>

<table width="90%" border="1" align="center" bordercolor="#FFFFFF">

<tr>

<td width="39%" bordercolor="#999999" bgcolor="#CCCCCC" border="1"><div align="center"><span class="style1"><strong>Nome do Arquivo:</strong> </span></div></td>

<td width="65%" border="1" bordercolor="#999999"><div align="center"><span class="style1"><?php echo $_FILES["file]["name"]; ?></span></div></td>

</tr>

<tr>

<td bordercolor=#999999" bgcolor="#CCCCCC" border="1"><div align="center" class="style2">Endere&ccedil;o do Arquivo: </div></td>

<td border="1" bordercolor="#999999"><div align="center"><span class="style1"> http://www.meusite/afotos/<?php echo $_POST["select_dir];?>/<?php echo $_FILES["file"]["name"]; ?></span></div></td>

</tr>

</table>

<table width=90%" border="1" align="center" bordercolor="#FFFFFF" bgcolor="#FFFFFF">

<tr>

<td bordercolor="#999999" bgcolor="#CCCCCC" border="1"><div align="center"><span class="style2">Visualiza&ccedil;&atilde;o da Imagem Postada:</span><br>

</div></td>

</tr>

<tr>

<td border="1"bordercolor="#999999"><div align="center"><br>

<img src="http://www.meusite.com.br/afotos/<?php echo $_POST["select_dir];?>/<?php echo $_FILES["file"]["name"]; ?>" border="1"><br>

&nbsp;</div></td>

</tr>

</table>

<P align="center" class="style1"><span class="style3">[!]</span><a href="java script:history.back(1)" class="style3"> Enviar Outro Arquivo</a> <br>

<br>

<br>

</P>

<table width="30%" border="1" align="center" bordercolor="#FFFFFF">

<tr>

<td bordercolor="#CCCCCC">&nbsp;</td>

</tr>

</table>

<P align="center" class="style1">&nbsp; </P>

</BODY>

</HTML>

Alguém poderia me ajudar a resolver esse problema?

OBrigado

Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0
Gel,

Ainda acredito que seja algum problema com permissão, porque testei o seu código aqui e funcionou perfeitamente!

Que erro você está tendo?

Ele não cria uma nova pasta dentro do diretorio AFOTOS e ao enviar a foto mesmo recebendo a confirmação de envio a foto não aparece em lugar algum.

Link para o comentário
Compartilhar em outros sites

  • 0

olá;

tire o @ da frente dos comandos@mkdir e @move_upload e veja se retorna alguma mensagem de erro ou noticia, .

mkdir($_POST["{$_POST["select_dir"]}"],0777);

move_uploaded_file($_FILES["file"]["tmp_name"],"./{$_POST["{$_POST["select_dir"]}"]}/{$_FILES["file"]["name"]}");

Link para o comentário
Compartilhar em outros sites

  • 0

A função que move o arquivo carregado para uma pasta é a move_uploaded_file, a sintaxe é a seguinte:

bool move_uploaded_file ( string nomedoarquivo, string destino )

Veja como você está usando no seu código:

@ move_uploaded_file($_FILES["file"]["tmp_name"],"./{$_POST["{$_POST["select_dir"]}"]}/{$_FILES["file"]["name"]}");

select_dir é o nome gerado pelo usuário, mas você não indicou que esta pasta estaria dentro de AFOTOS

Link para o comentário
Compartilhar em outros sites

  • 0
A função que move o arquivo carregado para uma pasta é a move_uploaded_file, a sintaxe é a seguinte:

bool move_uploaded_file ( string nomedoarquivo, string destino )

Veja como você está usando no seu código:

@ move_uploaded_file($_FILES["file"]["tmp_name"],"./{$_POST["{$_POST["select_dir"]}"]}/{$_FILES["file"]["name"]}");

select_dir é o nome gerado pelo usuário, mas você não indicou que esta pasta estaria dentro de AFOTOS

É verdade Andréa, estou tentando indicar que a pasta está dentro de AFOTOS, mas não estou tendo sucesso, sei que falta pouco para conseguir, se você puder me informar como ficaria o arquivo agradeço muito, se não vou tentando por aqui, você já me ajudou muito. Fico muito agradecido desde já.

Link para o comentário
Compartilhar em outros sites

  • 0

faltava pouco mesmo...

mkdir("afotos/".$_POST["{$_POST["select_dir"]}"],0777);
move_uploaded_file($_FILES["file"]["tmp_name"],"afotos/{$_POST["{$_POST["select_dir"]}"]}/{$_FILES['file']['name']}");

a função mkdir() cria o diretório, por isso você precisa indicar nela também que o diretório deve ser criado dentro de afotos.

Link para o comentário
Compartilhar em outros sites

  • 0
faltava pouco mesmo...

mkdir("afotos/".$_POST["{$_POST["select_dir"]}"],0777);
move_uploaded_file($_FILES["file"]["tmp_name"],"afotos/{$_POST["{$_POST["select_dir"]}"]}/{$_FILES['file']['name']}");

a função mkdir() cria o diretório, por isso você precisa indicar nela também que o diretório deve ser criado dentro de afotos.

Andréa, funcionou perfeitamente, eu apenas incrementei o seguinte, se a pasta já existir ele apenas envia o arquivo. Veja:

if(!file_exists("afotos/".$_POST["{$_POST["select_dir"]}"]))

mkdir("afotos/".$_POST["{$_POST["select_dir"]}"],0777);

move_uploaded_file($_FILES["file"]["tmp_name"],"afotos/{$_POST["{$_POST["select_dir"]}"]}/{$_FILES['file']['name']}");

Mais uma coisinha, ao enviar a foto é carregado o arquivo UPLOAD.PHP, onde deveria aparecer a imagem enviada, mas ela não aparece. Você consegue por favor ver qual erro está nesse arquivo, uma vez que a foto não carrega? Obrigado mais uma vez pela ajuda que vem me prestando.

Editado por Gel
Link para o comentário
Compartilhar em outros sites

  • 0
A imagem está lincando para http://www.meusite/afotos/

Coloque o link correto, de preferência relativo ao invés de absoluto.

Pronto Andréa, modifiquei a linha de comando para fazer a imagem aparecer e funcionou. Veja:

<img src="<? echo "afotos/{$_POST["{$_POST["select_dir"]}"]}/{$_FILES['file']['name']}"; ?>" border="1"><br>

Quero agradecer a sua atenção e dar por encerrado esse tópico. Problema resolvido.

Link para o comentário
Compartilhar em outros sites

  • 0
Denada... Fico feliz que tenha resolvido...

Oi Andréa, só mais uma coisinha, para evitar que usuarios enviem arquivos .exe ou outros que não sejam fotos, devo colocar o seguinte codigo:

// Verifica se o mime-type do arquivo é de imagem

if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"]))

{

$erro[] = "Arquivo em formato inválido!

A imagem deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo";

}

Porém não estou acertando o local onde devo colocar no meu arquivo.

<?php

// Altera o umask para a criação do diretório

$umask_anterior = umask(0);

if ($_FILES["file"]["error"] === 0)

{

if(!file_exists("afotos/".$_POST["{$_POST["select_dir"]}"]))

mkdir("afotos/".$_POST["{$_POST["select_dir"]}"],0777);

move_uploaded_file($_FILES["file"]["tmp_name"],"afotos/{$_POST["{$_POST["select_dir"]}"]}/{$_FILES['file']['name']}");

?>

Você pode me dar uma luz? Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0
Faça essa verificação após subir o arquivo, antes de criar uma nova pasta ou mover o arquivo.

Pois é Andréa estou tentando fazer isso, só que não estou acertando em que parte do codigo devo colocar o esse script, já tentei em vários lugares porém sem sucesso.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...