Jump to content
dipacheco

Download de ficheiro e overwrite

Recommended Posts

dipacheco

Boas pessoal! Quero fazer download de um ficheiro da alojado na internet e, caso ja exista, fazer overwrite. Eu consigo fazer o download do ficheiro e recebo sempre um erro a dizer que o ficheiro ja existe. Como dou a volta à situaçao e faço o overwrite?

Share this post


Link to post
Share on other sites
ribeiro55

Se estiveres a usar o DownloadFile / DownloadFileAsync da classe WebClient, por defeito é feito overwrite do ficheiro.

Para te devolver esse erro é porque o ficheiro está aberto algures, senão por a própria aplicação.

Certifica-te de que o ficheiro não está aberto em algum sítio e tenta de novo.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
dipacheco

eu estou a fazer o update

basicamente este é o codigo

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        checkforupdates()
    End Sub


    Public Sub checkforupdates()
        Dim file As String = Application.StartupPath & "\update.txt"
        Dim myVer As String = My.Application.Info.Version.ToString


        If My.Computer.FileSystem.FileExists(file) Then
            My.Computer.FileSystem.DeleteFile(file)
        End If


        My.Computer.Network.DownloadFile("http://servidor/update.txt", file)
        Dim lastver As String = My.Computer.FileSystem.ReadAllText(file)

        If Not myVer = lastver Then
            My.Computer.Network.DownloadFile("http://servirdor/update.txt", "C:\Users\Pacheco\Desktop\teste\update.txt")
        End If

    End Sub

Share this post


Link to post
Share on other sites
dipacheco

so tnh o ficheiro do vb aberto! nada mais... pelo q n ha razao para nao fazer o overwrite.

Share this post


Link to post
Share on other sites
dipacheco

acrescentei , "","", False,500,True) na linha em que fazia o download e assim forço o overwrite e funcionou...

ja agora faço outra pergunta. para fazer o download de uma pasta uso o mesmo metodo?

Share this post


Link to post
Share on other sites
dipacheco

nao ha maneira d copiar um directorio?? é q o q esotu a fazer é o update de uma aplicaçao vb... a aplicaçao é constituida por 3 partes... o executavel, o setup e uma pasta! consigo trazer o executavel e o setup novos mas nao a pasta... como poderes fazer isto?

Share this post


Link to post
Share on other sites
Caça

Acho que não há maneira de copiar pastas, tem de ser ficheiro a ficheiro.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
dipacheco

isso é pessimo pq preciso mesmo daquela pasta... so se em vez de alojar os 3 ficheiros alojar um zip!

o vb permite descompactar ficheiros? se permitir acho q é simples...

Share this post


Link to post
Share on other sites
ribeiro55

Porque razão não podes criar a pasta no alvo e fazer download dos tais 3 ficheiros?


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
Caça

o vb permite descompactar ficheiros? se permitir acho q é simples...

Permite, existe um artigo na Wiki


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
dipacheco

Porque razão não podes criar a pasta no alvo e fazer download dos tais 3 ficheiros?

Porque não sei quantos ficheiros estão na pasta.

Share this post


Link to post
Share on other sites
ribeiro55

És tu que controlas a pasta?

Se sim, constrói antes um TXT do género manifesto que te indique os ficheiros existentes.

Isto para não começarmos a escavar por o protocolo FTP acima.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
dipacheco

ribeiro... isso ate seria pratico se eu nao tivesse o problema de dentro dessa pasta ter outras pastas... e q d cada vez q publico uma versao nova da aplicaçao o numero de pastas aumenta... nao é pratico!

caça... faço um for each?

Share this post


Link to post
Share on other sites
ribeiro55

É mais prático do que começares a fazer listagens de directório via FTP, que dependendo da profundidade vão demorar bastante tempo.

Se és tu que controlas, o manifesto é o mais prático.

Até podes fazer uma pequena aplicação para criar manifestos com base na aplicação completa, localmente. Aí já podes usar "For Each", caso contrário "no cigar"


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
Caça

        For Each F As String In My.Computer.FileSystem.GetFiles("Caminho")
            My.Computer.FileSystem.CopyFile(F, "Destino")
        Next

Da maneira que o Sérgio te indicou também é pratico :P


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
dipacheco

ya... isso era soluçao se so existissem ficheiros dentro da pasta... mas podem existir pastas dentro da pasta...

nunca pensei ter tanto trabalho para o raio do programa fazer um misero update da web! gsus...

Share this post


Link to post
Share on other sites
ribeiro55

Ele está a falar de ficheiros remotos.

Por acaso nunca experimentei um URI remoto no GetFiles...

@dipacheco, recursividade. Volta a entrar no próprio sub caso encontre uma pasta, infinitamente até que não existam mais níveis.

Mas isto funciona a nível local. Remotamente não tenho a certeza que o GetFiles pape.

EDIT: Eu não sou católico nem nada disso, mas o alegado homem chamava-se "Jesus" e não Gsus.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
ribeiro55

Excelente :P

Aí tens dipacheco.

Só tens de empregar uma lógica recursiva simples.

A .NET framework alegra-me :P


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.