Pergunta

Estou upload de um arquivo usando um controle FileUpload simples chamado theFile (ASP.NET). Eu estou tentando obter o caminho absoluto do arquivo, mas thefile.PostedFile.FileName e thefile.FileName são os mesmos, apenas o nome exato do arquivo, nenhum caminho! Eu não posso usar Server.MapPath porque eu vou estar salvando este arquivo em um servidor diferente (transferência via matriz de bytes através de um webservice).

Ele quebra a esta linha:

Dim fStream As New FileStream(thefile.FileName, FileMode.Open, FileAccess.Read)

porque ele está tomando o nome do arquivo e mapeá-lo para o caminho relativo do meu VS! Eu preciso o caminho absoluto ...

Foi útil?

Solução

Um arquivo enviado através de HTTP nunca vai conter o caminho completo na máquina remota (cliente) - poderia dar informações sobre sua estrutura de diretórios, e assim é considerado um risco de segurança. Além disso, o uso seria? Se alguém está carregando um arquivo a partir de através da internet, por que você estar tentando abrir um filestream em seu (servidor asp.net) máquina local para o caminho que existia em sua máquina?

Ficheiros submetidos realmente vir através como um fluxo de bytes, como parte do pedido. Você precisa acessar o FileBytes propriedade do controle para obter o arquivo, ou ligue para os SaveAs () para salvá-lo para o servidor. No seu caso, você poderia provavelmente apenas obter os bytes e enviá-las para a chamada de webservice que você precisa fazer.

Outras dicas

(a transferência através da matriz de bytes através de um serviço Web).

Uma vez que você está atualmente exigindo a matriz de bytes do arquivo, porque não acessar matriz de bytes do arquivo através theFile.FileBytes propriedade?

Aqui é a referência para a propriedade FileBytes do controle da Web FileUpload: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload.filebytes.aspx

Se você gostaria de acessar o objeto Stream diretamente, você pode utilizar a propriedade fileContent. Aqui é a referência para a propriedade fileContent do controle da Web FileUpload: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload.filecontent.aspx

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top