Tipo de campo DOCUMENTO (nome do arquivo) - SC6

Olá, no SC6 o campo Documento - nome do arquivo está com alguns problemas:

[ul][li]No Firefox: o nome do arquivo e seu formato não são identificados ao tentar realizar o download. Por exemplo: fiz upload de um arquivo teste.doc; ao tentar baixar na tela de download consta que o nome do arquivo é ANEXO (nome dado ao campo Documento) e, além disso, o Firefox sempre associa o arquivo ao Acrobat Reader, mesmo que seja um arquivo .doc.[/li]
[li]No IE se um nome que arquivo contém ~ como em especificação.doc é impossível baixar o arquivo (é exibido o erro 500 - Internal Server Error)[/li][/ul]

No Chrome tudo funciona normalmente.

Alguém sabe como resolver esse problema?

A diferença dos navegadores é um grande problema.

É verdade. Certos headers HTTP são utilizados de forma diferente pelos diferentes browsers. Apesar disso, acho que o problema que estou enfrentando é um bug, visto que no SC5 tudo funciona normalmente…

Boa tarde,

Você poderia informar-me mais alguns detalhes referente este problema? Eu estive tentando simular o mesmo erro e não consegui, agradeço se enviar-me algumas imagens e mais informações, assim que o problema for encontrado eu irei encaminhá-lo para a nossa equipe de desenvolvimento.

Obrigado

John,

Utilizando o Firefox 9.01 em uma consulta que usa o campo do tipo Documento (nome do arquivo) quando eu clico em qualquer arquivo aparece sempre a mesma tela de download: com o nome do arquivo ANEXO e tipo de arquivo PDF. Segue a imagem:

Nessa imagem cliquei em dois arquivos. Um .doc e um .pdf. Em ambos os casos o nome do arquivo a ser baixado era ANEXO, quando deveria ser ANEXO I - LOCAÇAO DE SOLUÇÃO DE TELEFONIA.docx e ANEXO II - LOCAIS E TIPOS DE EQUIPAEMENTOS.pdf, respectivamente. Além disso, independentemente do formato do arquivo ele é sempre identificado com o PDF (o programa selecionado para abrir o arquivo sempre é um leitor de PDF).

Já para o IE (minha versão é a 8.0.6) o problema é com arquivos com contém ~, como é o caso do primeiro arquivo ANEXO I - LOCAÇAO DE SOLUÇÃO DE TELEFONIA.docx. Sempre que o arquivo tem esse acento o download do arquivo não inicia e uma nova janela é aberta com o seguinte erro:

Para casos em que o nome do arquivo não tem ~ o download ocorre normalmente.

Não sei se as imagens aparecerão, então segue o link delas: http://imageshack.us/photo/my-images/528/firefoxlv.jpg/ http://imageshack.us/photo/my-images/846/13826219.jpg/

Upload de arquivo com acentuação ou espaços da problema mesmo, faça uma rotina pra tirar os espaços ou troca-los por underline, e trocar as letras acentuadas pelas mesmas sem o acento.

Tiago,

Onde eu chamo essa rotina para formatar o nome dos arquivos?

No meu caso, o upload de arquivos é feito em um formulário com múltiplos registros. Por isso, tentei modificar o nome do arquivo selecionado pelo usuário no evento OnBeforeInsert. Entretanto, essa modificação não tem efeito no nome com que o arquivo é salvo no servidor (independentemente das modificações que eu fizer no nome do arquivo, o nome que prevalece é o original).

Peguei se não me engano aqui no forum mesmo esse método.

Para retirar os acentos e os espaços, criei um método com uma variável “nomeArquivo” e chamei nos eventos OnBeforeInsert e OnBeforeUpdate.


Chamada do método:
$nomeArquivo = nome_metodo({nome_campo});


Metodo:
$varnomeArquivo = str_replace(" ", "", $nomeArquivo);

$ACENTOS   = array("À","Á","Â","Ã","à","á","â","ã");
$SEMACENTOS= array("A","A","A","A","a","a","a","a");
$varnomeArquivo=str_replace($ACENTOS,$SEMACENTOS, $varnomeArquivo);
      
$ACENTOS   = array("È","É","Ê","Ë","è","é","ê","ë");
$SEMACENTOS= array("E","E","E","E","e","e","e","e");
$varnomeArquivo=str_replace($ACENTOS,$SEMACENTOS, $varnomeArquivo);
	   
$ACENTOS   = array("Ì","Í","Î","Ï","ì","í","î","ï");
$SEMACENTOS= array("I","I","I","I","i","i","i","i");
$varnomeArquivo=str_replace($ACENTOS,$SEMACENTOS, $varnomeArquivo);
      
$ACENTOS   = array("Ò","Ó","Ô","Ö","Õ","ò","ó","ô","ö","õ");
$SEMACENTOS= array("O","O","O","O","O","o","o","o","o","o");
$varnomeArquivo=str_replace($ACENTOS,$SEMACENTOS, $varnomeArquivo);
     
$ACENTOS   = array("Ù","Ú","Û","Ü","ú","ù","ü","û");
$SEMACENTOS= array("U","U","U","U","u","u","u","u");
$varnomeArquivo=str_replace($ACENTOS,$SEMACENTOS, $varnomeArquivo);
	   
$ACENTOS   = array("Ç","ç","ª","º","°");
$SEMACENTOS= array("C","c","a.","o.","o.");
$varnomeArquivo=str_replace($ACENTOS,$SEMACENTOS, $varnomeArquivo);      

return $varnomeArquivo;

Depois utilizei o “rename” para alterar o nome do arquivo salvo no servidor e um update pra alterar o nome salvo na tabela nos eventos OnAfterInsert e OnAfterUpdate.

rename($caminhocompleto_nomearquivo_old, $caminhocompleto_nomearquivo_new);

Valeu Tiago. Resolveu o problema!