seiti.eti.br

programming & gadgets


by seiti tt seiti

Estou aqui programando, feliz da vida, e me enviam um bug para matar.

Ao subir um arquivo em nosso sistema Asp.NET surge o erro:

“The given path’s format is not supported.”

ou

“Não há suporte para o formato do caminho dado.” (maldita MS por traduzir mensagens de erro)

Mas eu não conseguia reproduzir o problema de nenhuma maneira. Até testar no Internet Explorer. O método que utilizo para gravar o arquivo é este:

public string Grava(HttpPostedFile postedFile, string id) { string newfilename = id + postedFile.FileName; string fullName = DirPath + newfilename; postedFile.SaveAs(fullName); return fullName; }

A chamada é realizada assim, onde fupAnexo é um controle FileUpload:

string path = anexo.Grava(fupAnexo.PostedFile, guid.ToString());

O problema está nesta propriedade: postedFile.FileName. O conteúdo dela depende de qual navegador é utilizado pelo usuário.

No IE o conteúdo é o caminho completo do arquivo no computador do usuário: C:\Pasta\Pasta\Macarrao\arquivo.xis.

No Firefox apenas o nome do arquivo: arquivo.xis.

O framework deveria uniformizar o acesso aos recursos do sistema, mas aprendo cada vez mais que não dá para confiar em dados vindos do usuário nem do sistema. Não confie em nada.

Acertei o método para o que segue:

public string Grava(HttpPostedFile postedFile, string id) { string[] filename = postedFile.FileName.Split(‘\’); string newfilename = id + filename[filename.Count() - 1]; string fullName = DirPath + newfilename; postedFile.SaveAs(fullName); return fullName; }

Falta testar o caso em que o usuário acessa o sistema a partir do Linux (ou Mac OSX) usando o Internet Explorer. Mas acho que não existam tantos loucos por aí.