Jump to content

Upload de ficheiro


cristpate

Recommended Posts

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

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

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

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

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.