cristpate Posted September 28, 2009 at 03:43 PM Report Share #289018 Posted September 28, 2009 at 03:43 PM eu tenho este codigo abaixo que serve para fazer upload de ficheiros. entretato quando um ficheiro qualquer aparece com o nome em separado ele nao consegue ler o mesmo apos ser feito o upload. exemplo: um ficheiro com o seguinte nome-------- documento em word.doc mas se for: documentoemword.doc ele le sem problemas Código para o upload de ficheiros <?php $uploaddir = 'attch/Ficheiro_'.$REFERENCIA._; $uploadfile = $uploaddir . $_FILES['userfile']['name']; move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name']); ?> ajudem me cptos APARTE: Usa a tag code para colorir o código e torna-lo mais legível. craziness it's to do the same thing over and over again expecting a different result Link to comment Share on other sites More sharing options...
hbarquero Posted September 28, 2009 at 05:13 PM Report Share #289031 Posted September 28, 2009 at 05:13 PM boas, o que deves fazer é verificar se o nome do ficheiro a enviar tem espaços e/ou caracteres especiais antes de o enviar, e por exemplo substituíres por un - ou un _ o que te aconselho é criares una função que limpe espaços em branco e os tais caracteres antes de fazer o upload, dessa forma garantes que nunca terás problema nestas situações. Tudo o que não provoca a minha morte, torna-me mais forte.http://formacao-cursos.com Link to comment Share on other sites More sharing options...
cristpate Posted September 29, 2009 at 05:48 AM Author Report Share #289121 Posted September 29, 2009 at 05:48 AM mas em php nao conheço uma funcao que faça isso. craziness it's to do the same thing over and over again expecting a different result Link to comment Share on other sites More sharing options...
hbarquero Posted September 29, 2009 at 08:02 AM Report Share #289128 Posted September 29, 2009 at 08:02 AM existem varias forma de substituires algo numa variável em php como por exemplo str_replace - http://pt2.php.net/manual/pt_BR/function.str-replace.php entre outras, o que me referia era criares uma função tua, que limpasse o nome do ficheiro, com as tuas regras, antes de o guardares. Coloco-te aqui uma possível solução: <? echo replace_chars("teste de ficheiro"); function replace_chars($string) { /* array com os caraccteres inválidos e respectivas regras */ $replaces=array( "/[áàäâåã]/" => "a", "/[éèëê]/" => "e", "/[íìïî]/" => "i", "/[óòöôõ]/" => "o", "/[úùüû]/" => "u", "/[ýÿ]/" => "y", "/[ñ]/" => "n", "/[ç]/" => "c", "/[^a-z0-9-]/" => "-", // O restante sustitui por - "/--+/" => "-", // se tivermos 2 - ou seja -- ou --- ou ---- passamos para apenas 1 - "/^-|-$/" => "-" ); /* remove/sustirui os caracteres invalidos com base no array $replaces */ $str_result= preg_replace(array_keys($replaces), array_values($replaces), strtolower($string)); return $str_result; } ?> Tudo o que não provoca a minha morte, torna-me mais forte.http://formacao-cursos.com Link to comment Share on other sites More sharing options...
cristpate Posted September 29, 2009 at 03:22 PM Author Report Share #289178 Posted September 29, 2009 at 03:22 PM este script tbm remove os espaços em branco? craziness it's to do the same thing over and over again expecting a different result Link to comment Share on other sites More sharing options...
hbarquero Posted September 29, 2009 at 04:27 PM Report Share #289186 Posted September 29, 2009 at 04:27 PM sim. as 8 posicções do array - "/[áàäâåã]/" => "a", até "/[ç]/" => "c", substitui os caracteres especiais pela respectiva letra a 9 posiçao do array susbstitui tudo o que não for = a letras ou numeros para - "/[^a-z0-9-]/" => "-", // O restante sustitui por - as 2 seguintes "/--+/" => "-", // se tivermos 2 - ou seja -- ou --- ou ---- passamos para apenas 1 - "/^-|-$/" => "-" para remover sinais de - duplicados. Tudo o que não provoca a minha morte, torna-me mais forte.http://formacao-cursos.com Link to comment Share on other sites More sharing options...
Felipe Graziuso Posted October 1, 2009 at 04:09 PM Report Share #289534 Posted October 1, 2009 at 04:09 PM Cara da uma olhada nesse sisteminha talvez possa ser util é bem simples segue abaixo o código com os devidos comentários <?php if (isset($arquivo)) // Verificamos se a variável "arquivo" existe { $nome = rand(00,9999); // Aqui criamos um número randômico, para utilizarmos como nome do arquivo $dir="up/"; //Esse é o diretório onde ficará os arquivos enviados, lembre-se de criá-lo. Este script não cria diretórios if (is_uploaded_file($arquivo)) // Verificamos se existe algum arquivo na variável "Arquivo" { move_uploaded_file($arquivo,$dir.$nome.$arquivo_name); // Aqui, efetuamos o upload, propriamente dito echo "Enviado<br>"; // Caso dê tudo certo, imprimi na tela "enviado" }else{ echo "erro"; // Caso ocorra algum erro, imprimi na tela "erro" } } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Upload de Imagens</title> </head> <link rel="stylesheet" href="estilo.css"> <body> <form action="upload.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> Este sistema de upload é realmente muito simples, mas cabe a você agora, pesquisar mais e descobrir formas mais avançadas de criar um sistema de upload. Abraços APARTE: Usa o Geshi, fica melhor o código. 😄 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now