Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

hvjohny

Upload, arquivos com problema na acentuação

Recommended Posts

Boa noite galera.

Depois de muito pesquisar na internet, resolvi recorrer ao imasters, que em todos problemas que tive obtive respostas e soluções.Espero que possam me ajudar dessa vez também.

Oque parece fácil, acabou virando uma grande dor de cabeça...

 

Estou usando o "Uploadify" para realizar upload de arquivos, quando se trata de imagens, uso a função md5+mt_rand e não ocorre nenhum problema à respeito de acentuações.

Porém agora não se trata de imagens. Estou enviando faixas de cd, e quando alguma faixa tem carácter especial, é substituído por outro carácter. No banco de dados fica tudo certo, com o nome original, o problema é no arquivo, o nome é alterado no arquivo. Vejam o exemplo:

 

Ao terminar o upload, a faixa 11 Tubarão, fica como: 11 Tubarão. E lembrando, no banco fica correto(11 Tubarão).

 

Seria fácil arrumar esse problema substituindo os caracteres especiais por outra coisa, mas como se trata de faixas, e essas faixas musicais serão baixadas, não é muito interessante para esse projeto.

A única coisa que consegui encontrar à respeito, e que não conseguiu me ajudar foi acrescentar as funções:

html_entity_decode(htmlentities($_FILES['Filedata']['name'], ENT_QUOTES, 'UTF-8'));

 

Bom, para quem quiser dar uma olhada no código, aqui está o início dele:

 

$diretorio = '../../../arquivos/player/'; // Caminho
$PI = addslashes(@$_REQUEST['PI']);

if (!empty($_FILES)) {
    $arquivo = $_FILES['Filedata']['tmp_name']; 

    // Validate the file type
    $fileTypes = array('mp3'); // File extensions
    $fileParts = pathinfo($_FILES['Filedata']['name']);
	$novo_nome = $_FILES['Filedata']['name']; // AQUI SERIA ACRESCENTADO AS FUNÇÕES ACIMA
	$caminho_arquivo = $diretorio.$novo_nome;

    if (in_array($fileParts['extension'],$fileTypes) && !file_exists('../../../arquivos/player/'.$novo_nome)) {
        if(move_uploaded_file($arquivo,$caminho_arquivo))
        {  // envia o arquivo e faz as outras verificações

Bom galera, é isso. Espero que me ajudem.

Muito obrigado pela atenção.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, boa noite.

Provavelmente há um conflito na codificação em algum lugar. Responda:

 

 

1) Qual a codificação da página?

2) Qual a codificação do banco de dados?

3) Qual a codificação do PHP?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, boa noite.

Provavelmente há um conflito na codificação em algum lugar. Responda:

 

 

1) Qual a codificação da página?

2) Qual a codificação do banco de dados?

3) Qual a codificação do PHP?

 

Obrigado pela resposta amigo.

O charset da página onde uso o uploadify está setado como utf-8, no banco de dados igualmente(mas como comentei, no banco de dados é adicionado corretamente) e no script PHP, onde o uploadify envia a requisição, não está setado nenhuma codificação. Já tentei setar o head como utf-8, mas continuou com problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom amigo ja tentou fazer um teste para com a função utf8_encode() no caractere ã para ver o resultado ou ainda ja olhou direto em seu banco de dados para ver como esta o caractere ã???

Bom se você fizer um dos dois teste vera que o ã é o ã em UTF-8.

 

Uma das soluções para o seu problema seria salvar o arquivo com o nome sem acento e na hora do download e na hora do download colocar o nome com o acento assim com esta salvo no DB.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom amigo ja tentou fazer um teste para com a função utf8_encode() no caractere ã para ver o resultado ou ainda ja olhou direto em seu banco de dados para ver como esta o caractere ã???

Bom se você fizer um dos dois teste vera que o ã é o ã em UTF-8.

 

Uma das soluções para o seu problema seria salvar o arquivo com o nome sem acento e na hora do download e na hora do download colocar o nome com o acento assim com esta salvo no DB.

 

Realmente amigo, ã é ã passado para utf8. Graças a isso consegui encontrar a função que faz o contrário(utf8_decode). foi só fazer isso que agora está salvando corretamente na pasta.

problema resolvido, muito obrigado pela dica.

Resolução pra quem estiver com o mesmo problema:

 

$caminho_arquivo = utf8_decode($diretorio.$novo_nome);

Abraços, e obrigado por ajudarem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.