ASP.NET FAZER DOWNALOD E DESCOMPACTAR
Olá
Estou precisando fazer uma rotina mais não sei se é possÃvel.
Tem um arquivo *.zip no servidor na internet... ai tenho uma página em asp.net, eu quero criar um link onde o usuário possa fazer o download do arquivo e já descompactar e executar um arquivo que esta dentro.
Isso é possÃvel?
O arquivo que quero executar é um executável... tentei colocar para baixar direto o executável mais o windows bloqueia e não deixa o arquivo ser executado.
Estou precisando fazer uma rotina mais não sei se é possÃvel.
Tem um arquivo *.zip no servidor na internet... ai tenho uma página em asp.net, eu quero criar um link onde o usuário possa fazer o download do arquivo e já descompactar e executar um arquivo que esta dentro.
Isso é possÃvel?
O arquivo que quero executar é um executável... tentei colocar para baixar direto o executável mais o windows bloqueia e não deixa o arquivo ser executado.
Não, não é possÃvel, imagine como seria fácil distribuir um vÃrus se isso fosse possÃvel, seria uma enorme falha de segurança se os browsers permitissem fazer isso.
Que negócio sem graça.
Tem alguma dica?
Preciso distribuir uma aplicação pela internet, já tentei o ClickOnce mais não consegui fazer funcionar.
Inicialmente estava pensando em fazer direto na web (asp.net) mais como não sou muito familiarizado e projeto tem pouco tempo para entregar estou procurando uma solução.
Tem alguma dica?
Preciso distribuir uma aplicação pela internet, já tentei o ClickOnce mais não consegui fazer funcionar.
Inicialmente estava pensando em fazer direto na web (asp.net) mais como não sou muito familiarizado e projeto tem pouco tempo para entregar estou procurando uma solução.
Forçar o download você até consegue com o executável compactado, mas a extração e execução fica por conta do usuário!
Creio que se você não esta tentando distribuir um vÃrus pq esta com muita cara! Caso não seja é só orientar o usuário de fazer a execução do aplicativo!
Hoje em dia é muito difÃcil uma pessoa não saber instalar um aplicativo ainda mais se for passado um treinamento!
bom vamos lá função para forçar o download via sua própria aplicação!
C#
VB.Net
A expressão HttpContext.Current esta sendo utilizada, pois os métodos estão sendo executados de dentro de uma classe e não de uma página!
Caso for criar o método dentro da página então pode remover a expressão!
Importante ambos os métodos utilizam as Bibliotecas System e System.IO, portanto faça a importação do mesmo para onde for utilizar o método
Espero ter ajudado
Creio que se você não esta tentando distribuir um vÃrus pq esta com muita cara! Caso não seja é só orientar o usuário de fazer a execução do aplicativo!
Hoje em dia é muito difÃcil uma pessoa não saber instalar um aplicativo ainda mais se for passado um treinamento!
bom vamos lá função para forçar o download via sua própria aplicação!
C#
public static void Download(string sNomeArquivo, string sCaminho)
{
DirectoryInfo pasta = new DirectoryInfo(HttpContext.Current.Server.MapPath(sCaminho));
FileInfo arquivo = new FileInfo(pasta.FullName + @[Ô]\[Ô] + sNomeArquivo);
HttpContext.Current.Response.Clear(); //Limpar Buffer de SaÃda
//Cabeçalho que especifica a caixa de dialogo [Ô]Salvar Como[Ô]
HttpContext.Current.Response.ContentType = [Ô]application/octet-stream[Ô];
HttpContext.Current.Response.AddHeader([Ô]Content-Disposition[Ô], [Ô]attachment; filename=\[Ô][Ô] + arquivo.Name + [Ô]\[Ô][Ô]);
//Adiciona ao cabeçalho o tamanho do arquivo para que o browser possa exibir o progresso do download
HttpContext.Current.Response.AddHeader([Ô]Content-Length[Ô], arquivo.Length.ToString());
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.WriteFile(arquivo.FullName);
}
VB.Net
Public Shared Sub Download(ByVal sNomeArquivo As string, ByVal sCaminho As string)
Dim pasta As New DirectoryInfo(HttpContext.Current.Server.MapPath(sCaminho))
Dim arquivo As New FileInfo(pasta.FullName & [Ô]\[Ô] & sNomeArquivo)
HttpContext.Current.Response.Clear() [ô]Limpar Buffer de SaÃda
[ô]Cabeçalho que especifica a caixa de dialogo [Ô]Salvar Como[Ô]
HttpContext.Current.Response.ContentType = [Ô]application/octet-stream[Ô]
HttpContext.Current.Response.AddHeader([Ô]Content-Disposition[Ô], [Ô]attachment; filename=[Ô][Ô][Ô] & arquivo.Name & [Ô][Ô][Ô][Ô])
[ô]Adiciona ao cabeçalho o tamanho do arquivo para que o browser possa exibir o progresso do download
HttpContext.Current.Response.AddHeader([Ô]Content-Length[Ô], arquivo.Length.ToString())
HttpContext.Current.Response.Flush()
HttpContext.Current.Response.WriteFile(arquivo.FullName)
End Sub
A expressão HttpContext.Current esta sendo utilizada, pois os métodos estão sendo executados de dentro de uma classe e não de uma página!
Caso for criar o método dentro da página então pode remover a expressão!
Importante ambos os métodos utilizam as Bibliotecas System e System.IO, portanto faça a importação do mesmo para onde for utilizar o método
Espero ter ajudado
Tópico encerrado , respostas não são mais permitidas