• 0
Sign in to follow this  
jefponte

Envio de arquivo para servidor usando uma variável para escolher o des

Question

É o seguinte. Eu tenho um código que envia arquivos para o servidor. Funciona perfeitamente, mas surgiu uma necessidade. Usando sessão, quero que cada usuário tenha sua própria pasta e que seus arquivos enviados cheguem na pasta escolhida. Também uso Mysql para listar os nomes dos arquivos, mas nessa parte já está tudo certo. O problema mesmo está no momento em que eu tento pegar o nome da pasta para mover o arquivo e salvar no servidor.

Sabendo que o formulário do arquivo anterior envia no method post o valor do login do usuário.

O problema está nas primeiras linhas: $_UP['pasta'] = $titulo/';

Se eu escrever qualquer nome no lugar dessa variável título, ele envia o arquivo para uma pasta com o mesmo nome. Eu queria que ele enviasse o arquivo para uma pasta com o mesmo nome resgatado pela variável. Para ver o a página precisa estar cadastrado.

Página de cadastro:

http://www.gcsufc.com.br/login.php

Página do formulário de envio de arquivos:

http://www.gcsufc.com.br/usuarios/upar.php

Veja o código:

<?php

$titulo = $_POST["login];

// Pasta onde o arquivo vai ser salvo

$_UP['pasta'] = $titulo/';

// Tamanho máximo do arquivo (em Bytes)

$_UP['tamanho'] = 1024 * 1024 * 2; // 2Mb

// Array com as extensões permitidas

$_UP['extensoes'] = array('jpg', 'png', 'gif', 'pdf', 'doc', 'docx', 'odt');

// Renomeia o arquivo? (Se true, o arquivo será salvo como .jpg e um nome único)

$_UP['renomeia'] = false;

// Array com os tipos de erros de upload do PHP

$_UP['erros'][0] = 'Não houve erro';

$_UP['erros'][1] = 'O arquivo no upload é maior do que o limite do PHP';

$_UP['erros'][2] = 'O arquivo ultrapassa o limite de tamanho especifiado no HTML';

$_UP['erros'][3] = 'O upload do arquivo foi feito parcialmente';

$_UP['erros'][4] = 'Não foi feito o upload do arquivo';

// Verifica se houve algum erro com o upload. Se sim, exibe a mensagem do erro

if ($_FILES['arquivo']['error'] != 0) {

die("Não foi possível fazer o upload, erro:<br />" . $_UP['erros'][$_FILES['arquivo']['error']]);

exit; // Para a execução do script

}

// Caso script chegue a esse ponto, não houve erro com o upload e o PHP pode continuar

// Faz a verificação da extensão do arquivo

$extensao = strtolower(end(explode('.', $_FILES['arquivo']['name'])));

if (array_search($extensao, $_UP['extensoes']) === false) {

echo "Por favor, envie arquivos com as seguintes extensões: jpg, png, doc, docx, pdf ou gif";

}

// Faz a verificação do tamanho do arquivo

else if ($_UP['tamanho'] < $_FILES['arquivo']['size']) {

echo "O arquivo enviado é muito grande, envie arquivos de até 2Mb.";

}

// O arquivo passou em todas as verificações, hora de tentar movê-lo para a pasta

else {

// Primeiro verifica se deve trocar o nome do arquivo

if ($_UP['renomeia'] == true) {

// Cria um nome baseado no UNIX TIMESTAMP atual e com extensão .jpg

$nome_final = time().'.jpg';

} else {

// Mantém o nome original do arquivo

$nome_final = $_FILES['arquivo']['name'];

}

// Depois verifica se é possível mover o arquivo para a pasta escolhida

if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $_UP['pasta'] . $nome_final)) {

// Upload efetuado com sucesso, exibe uma mensagem e um link para o arquivo

echo "Upload efetuado com sucesso!";

echo '<br /><a href=' . $_UP['pasta] . $nome_final . '">Clique aqui para acessar o arquivo</a>';

} else {

// Não foi possível fazer o upload, provavelmente a pasta está incorreta

echo "Não foi possível enviar o arquivo, tente novamente";

}

}

?>

Share this post


Link to post
Share on other sites

4 answers to this question

Recommended Posts

  • 0

como que ele ta enviando o valor do formulario ... pois se com o nome direito e com o $_POST['login']; não ta indo quer dizer que tem algo errado no envio.

Share this post


Link to post
Share on other sites
  • 0

Não me parece que o formulá tem problema, mas já que você pediu está aí.

Arquivo upar.php

<form enctype="multipart/form-data" action="insertarquivo.php" method="post"><br>

Arquivo <input type="file" name="arquivo"><br>

<input type="hidden" name="login" Value="$_SESSION[usuariologin]">

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

</form>

Já tentei usando essa variável global direto lá no arquivo insertarquivo.php, mas deu na mesma.

Ele ta inserindo o id do usuário no banco de dados, o nome do arquivo e o tipo, mas na hora de receber o arquivo não da certo.

O código do jeito que está, dá essa resposta.

Dados inseridos com sucesso! Estamos redirecionando para a página inicial.

Warning: move_uploaded_file($_SESSION[usuariologin]/Projeto de Trabalho 30-05-2012.pdf) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/oreidosl/public_html/fcsufc/usuarios/insertarquivo.php on line 112

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpB1IuUJ' to '$_SESSION[usuariologin]/Projeto de Trabalho 30-05-2012.pdf' in /home/oreidosl/public_html/fcsufc/usuarios/insertarquivo.php on line 112

Não foi possível enviar o arquivo, tente novamente

Opa!

Consegui resolver.

Removi o campo login do formulário e coloquei a variável de sessão direto lá no logal.

// Pasta onde o arquivo vai ser salvo

$_UP['pasta] = $_SESSION['Usuariologin']. '/';

Funcionou!!!!

\o/

Mas eu lembro de ter tentado isso ontem e não ter dado certo.... Oo

Bem, essas paradas de concatenação são as partes mais complicadas.

Mas esse problema levanta uma questão. Porque do outro jeito não estava dando certo? Eu errei mesmo no código do formulário?

De qualquer maneira o problema já foi resolvido. Agradeço mais uma vez JaguA.

Share this post


Link to post
Share on other sites
  • 0

mas so para voce saber o erro tava aqui..

<input type="hidden" name="login" Value="$_SESSION[Usuariologin]">
deve ser assim
<input type="hidden" name="login" Value="<?php echo $_SESSION[Usuariologin]; ?>">

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this