Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Como enviar arquivos para o servidor, meu código não executa o move_uploaded_file
$nome = $_FILES['file']['name'];
$tipo = $_FILES['file']['type'];
$TmpName = $_FILES['file']['tmp_name'];
$erro = $_FILES['file']['error'];
if ($erro == 0) {
$ext = strtolower(end(explode('.', $nome)));
$nn= time().'-'.uniqid().'.'.$ext;
$destino = '../'.$nn;
print_r("../{$nn}");
move_uploaded_file($_FILES['file']['tmp_name'], "../{$nn}") or die('houve um erro ao enviar o arquivo');
}else{
echo "Não consegui enviar o arquivo: {$nome}. <a href='../index.php'>Voltar</a>";
}
sempre que tento enviar um arquivo aparece houve um erro ao enviar o arquivo.
o único erro que está aparecendo é este:
Strict Standards: Only variables should be passed by reference in /var/www/html/PG/code/teste01.php on line 12
../1438100086-55b7aa7660f73.zip
e na linha 12 eu tenho:
$ext = strtolower(end(explode('.', $nome)));
Isso é por que você precisa atribuir o retorna de explode a uma variável, para, depois, usar end().
$arr = explode('.', $nome);
$ext = strtolower(end($arr));
E qual é o valor de $erro? É só dar um echo/var_dump pra ver
o valor de $erro é 0 mas o problema era outro, era só separar as funções
Duas coisas:
1. Habilite todas as exibições de erro, como mostrado neste tópico
2. Sua variável $erro vai te dizer o motivo do problema. Veja http://php.net/manual/pt_BR/features.file-upload.errors.php