• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

cristpate

Upload de ficheiro

7 mensagens neste tópico

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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;
}
?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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. :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora