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

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


jefponte

Pergunta

É 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";

}

}

?>

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 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.

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
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...