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

(Resolvido) Problemas com Upload


a b c 123

Pergunta

Opa

o que está errado para setar a pasta do diretório em que vai o arquivo ?

O código dá certinho, mas só se eu botar: $dir ="nomedapasta/";

e com o $_GET["dir"] ele dá erro.

mas eu dou o echo e ele aparece certinho, o que pode ser ? Obrigado

<?php

$dir = $_GET["dir"].'/';
echo $dir;

if (isset($arquivo)) {
$nome = rand(00,9999); 

if (is_uploaded_file($arquivo)) { 
move_uploaded_file($arquivo,$dir.$nome.$arquivo_name);
echo "Enviado<br>";
} else {
echo "erro";
}
}

?>

Link para o comentário
Compartilhar em outros sites

25 respostass a esta questão

Posts Recomendados

  • 0

Tente Assim:

<?php

$dire = $_GET["dir"];
$dir = $dire . "/";

if (isset($arquivo)) {
$nome = rand(00,9999); 

if (is_uploaded_file($arquivo)) { 
move_uploaded_file($arquivo,$dir.$nome.$arquivo_name);
echo "Enviado<br>";
} else {
echo "erro";
}
}

?>

Link para o comentário
Compartilhar em outros sites

  • 0

O erro que dá é esse:

Warning: move_uploaded_file(/955teste.htm) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/arquivos.php on line 21

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpKhLbqX' to '/955teste.htm' in /home/arquivos.php on line 21

o echo é:

arqs/

se eu setar direto o nome do diretório, ele vai certinho, sem problema algum, mas se eu pesso pra ele pegar o conteúdo da variável ele não vai.

Tentei de diversas maneiras e nada.

Link para o comentário
Compartilhar em outros sites

  • 0

Po galera...isso é problema de permissões.Leiam as mensagens do PHP com mais atenção.

Seu código um pouco modificado:

Linux (poderia ser feito tambem com as funcoes da posix...):

<?php
$dir = $_GET["dir"].'/';
echo $dir;

if (isset($arquivo)) {
    if (is_uploaded_file($arquivo)) {
        $nome = rand(00,9999);
        if(is_dir($dir)) {
            if(!is_writeable($dir)) {
                if(!chmod($dir, 0777)) {
                    $superUsuario   = 'root'; /*mudar para o super usuario*/
                    $pwSuperUsuario = 'exemplo'; /*mudar para a senha do super usuario*/
                    $chmoded = (boolean)shell_exec('echo "'.$pwSuperUsuario.'" | sudo -u '.$superUsuario.' -S chmod 777 '.$dir.' && echo 1 || echo 0');
                    if(!$chmoded) die('Diretoria restrita.');
                }
            }
        } else {
           echo 'O argumento \'', $dir, '\' não é uma diretoria.';
           exit(1);
        }
        move_uploaded_file($arquivo,$dir.$nome.$arquivo_name);
        echo 'Enviado<br>';
     } else {
        echo 'erro';
     }
}

?>
Cross-Platform ('menos eficiente'):
<?php
$dir = $_GET["dir"].'/';
echo $dir;

if (isset($arquivo)) {
    if (is_uploaded_file($arquivo)) {
        $nome = rand(00,9999);
        if(is_dir($dir)) {
            if(!is_writeable($dir)) {
                if(!chmod($dir, 0777)) {
                    die('Diretoria restrita.');
                }
            }
        } else {
           echo 'O argumento \'', $dir, '\' não é uma diretoria.';
           exit(1);
        }
        move_uploaded_file($arquivo,$dir.$nome.$arquivo_name);
        echo 'Enviado<br>';
     } else {
        echo 'erro';
     }
}

?>

Link para o comentário
Compartilhar em outros sites

  • 0

O erro de permisão é porque esta tentando salvar na pasta atual do script que não deve ter permissao, mais era para salvar dentro do diretorio especificado por $dir, segundo você $dir no echo da o valor correto mais na hora do move_upload não da. (estranho, tem certeza que ta fazendo corretamente?)

<?php
$dir = $_GET['dir'];
if($dir == FALSE)
die("Diretorio invalido");
$dir .= "/";
if (isset($arquivo)) {
$nome = rand(00,9999);
$destino = $dir . $nome . $arquivo_name;

if (is_uploaded_file($arquivo)) {
move_uploaded_file($arquivo,$destino);
echo "Enviado<br>";
} else {
echo "Erro ao salvar arquivo em <b>".$caminho."</b>";
}
}
?>

Link para o comentário
Compartilhar em outros sites

  • 0

Aqui vai todo o código do arquivo "arquivos.php"

<html>

<head>

<title>Upload</title>

</head>

<body>

<?php

$dir1 = $_GET["dir"];

$dir = $dir1 . '/';

echo $dir;

if (isset($arquivo))

{

$nome = rand(00,9999);

if (is_uploaded_file($arquivo))

{ move_uploaded_file($arquivo,$dir.$nome.$arquivo_name);

echo "Enviado<br>";

}else{

echo "erro";

}

}

?>

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

<table width="375" border="0" cellpadding="0" cellspacing="0">

<tr>

<td>

<input type="file" name="arquivo"> </td>

</tr>

<tr>

<td>

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

</td>

</tr>

</table>

</form>

</body>

</html>

Link para o comentário
Compartilhar em outros sites

  • 0

Não tenho certeza, mas acho que o erro ta aqui:

<form action="arquivos.php" method="post" enctype="multipart/form-data">
<table width="375" border="0" cellpadding="0" cellspacing="0">
<tr>

<td>

<input type="file" name="arquivo"> </td>
</tr>
<tr>
<td>
<input type="submit" value="Enviar"> 
</td>
</tr>
</table>
</form>
Se você quer pegar um valor pelo GET, não adianta colocar la na url: arquivos.php?dir=arqs e não colocar no action do form. Tente deixar o form assim:
<form action="arquivos.php?dir=arqs" method="post" enctype="multipart/form-data">
<table width="375" border="0" cellpadding="0" cellspacing="0">
<tr>

<td>

<input type="file" name="arquivo"> </td>
</tr>
<tr>
<td>
<input type="submit" value="Enviar"> 
</td>
</tr>
</table>
</form>

<form action="arquivos.php?dir=arqs" method="post" enctype="multipart/form-data">

Poste o resultado.

Obrigado, Cerock. :D

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,7k
×
×
  • Criar Novo...