Avatar billede Kim Neesgaard Seniormester
18. juli 2008 - 18:58 Der er 19 kommentarer og
1 løsning

Download af fil fra webserver til lokal pc

Jeg kunne godt bruge følgende funktionalitet:

1/ I en Windowsapplikation (tilsluttet et firmanetværk) kan brugeren trykke på en knap.

2/ Tryk på knappen bevirker, at en fil fra en bestemt placering på webserveren kopieres til et specificeret bibliotek på brugerens egen pc. Kopieringen skal foretages 'bagved', så brugeren hverken kan bestemme eller se kilde- eller afleveringsplacering.

Er det muligt?
Avatar billede thesurfer Nybegynder
18. juli 2008 - 19:00 #1
Yep :-)

Jeg mener at det er:

File.Copy sti-til-kilde-fil, sti-til-destinations-fil
Avatar billede thesurfer Nybegynder
18. juli 2008 - 19:02 #2
Evt kunne du vel også bruge WebClient (mener jeg den hedder) til download.. eller læse filen binær fra kilden, og skrive filen binært til destinationen..
Avatar billede arne_v Ekspert
18. juli 2008 - 19:10 #3
WebClient DownloadFile er lige til hoejre benet.

Hvis vi nu antager at den windows app er en .NET app (kategorien antyder det), saa
kan brugeren se URL og lokal sti ved at decompile EXE filen. Og medmindre der bruges
HTTPS vil URL ogsaa kunne sniffes paa netvaerket. Og lokal sti kan altid afsloeres
med at kigge paa alle filer foer og efter. Saa spoergsmaalet er: hvor sikkert skal
det vaere ?
Avatar billede Kim Neesgaard Seniormester
18. juli 2008 - 20:02 #4
Det skal IKKE være ret sikkert (ganske 'almindelige' brugere) - brugerne skal blot ikke blandes ind i kopieringsforløbet.
Avatar billede Kim Neesgaard Seniormester
18. juli 2008 - 20:05 #5
Har I en eksempelkode?
Avatar billede arne_v Ekspert
18. juli 2008 - 20:07 #6
(new WebClient()).DowloadFile(url, fnm);
Avatar billede Kim Neesgaard Seniormester
19. juli 2008 - 10:38 #7
Hvis filen på webserveren hedder D:/Test.doc og skal overføres til C:/bib1, har du så et helt eksempel på koden til knappen?
Avatar billede arne_v Ekspert
20. juli 2008 - 16:46 #8
Du henter ikke fil stier fra en web server, men derimod URL'er.

Men:

    void HentClick(object sender, EventArgs e)
    {
        (new WebClient()).DowloadFile("http://www.blabla.dk/foobar.dat", @"C:\bib\foobar.dat");
    }
Avatar billede Kim Neesgaard Seniormester
20. juli 2008 - 18:12 #9
Hvad er det i vb? Jeg har prøvet at få det oversat, men den giver fejl i oversætteren.
Avatar billede arne_v Ekspert
20. juli 2008 - 18:34 #10
prøv:

    Private Sub HentClick(ByVal sender As Object, ByVal e As EventArgs)
        (New WebClient()).DowloadFile("http://www.blabla.dk/foobar.dat", "C:\bib\foobar.dat")
    End Sub
Avatar billede Kim Neesgaard Seniormester
20. juli 2008 - 18:49 #11
Jeg får syntax error på den første parentes.
Avatar billede Kim Neesgaard Seniormester
20. juli 2008 - 21:05 #12
Jeg kiggede lidt nærmere på Microsofts supportside og fandt her syntaksen i VB:

Imports System.Net

Public Class DownloadFile
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim myWebClient As New WebClient()
        myWebClient.DownloadFile("http://www.blabla.dk/bg.jpg", "C:/TestWebClient.jpg")
    End Sub
End Class

Det er testet og det virker!!! Totalt smart!

Smider du et svar? Og tusind tak for hjælpen!
Avatar billede arne_v Ekspert
20. juli 2008 - 22:12 #13
ok
Avatar billede Kim Neesgaard Seniormester
21. juli 2008 - 09:15 #14
Min test i går var på eget websted. Jeg har i dag prøvet på min arbejdsmaskine og firmaets webserver, men her får jeg meldingen:

Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

Ved du, hvad man kan gøre ved det?
Avatar billede arne_v Ekspert
22. juli 2008 - 04:17 #15
Den mener ikke at du har lov til at skrive en fil der hvor du forsøger at skrive den.

Du skal ind og checke rettigheder.
Avatar billede Kim Neesgaard Seniormester
22. juli 2008 - 12:02 #16
Jeg har fra IT afdelingen fået at vide, at serveren er sat til at bruge windows authentication, så derfor skal der tilføjes en linie - det skal derfor se sådan ud:

Imports System.Net

Public Class DownloadFile

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  Dim myWebClient As New WebClient()
  myWebClient.Credentials = New NetworkCredential("Windows username", "Windows password")
  myWebClient.DownloadFile("http://www.blabla.dk/bg.jpg", "C:/TestWebClient.jpg")
End Sub

End Class

Det er testet og det virker!
Avatar billede arne_v Ekspert
22. juli 2008 - 15:26 #17
giver jo mening
Avatar billede Kim Neesgaard Seniormester
22. juli 2008 - 15:54 #18
Bestemt! Bare lidt upraktisk at bruge sine egne initialer/pw, men jeg prøver at få dem til at oprette en ekstra gyldig Windowsbruger, som jeg kan benytte.
Avatar billede Kim Neesgaard Seniormester
28. juli 2008 - 14:54 #19
Jeg har lige fået afslag fra IT afdelingen om at få et sæt Windows bruger/password til denne:

myWebClient.Credentials = New NetworkCredential("Windows username", "Windows password")

De hævder, at det må kunne gøre uden, da man netop ved windows authentication skulle give alle gyldige Windowsbrugere adgang og det lyder jo også rimeligt nok.

Kan du tænke på en måde, hvorved det kan lade sig gøre uden denne linie?
Avatar billede Kim Neesgaard Seniormester
13. august 2008 - 12:16 #20
Nu har jeg det da! Man skal slet ikke undvære denne linie, men derimod indsætte ("Windows username", "Windows password") som variable. Den pågældende brugers initialer aflæses automatisk fra Windows og brugeren bedes indtaste sit Windowspassword i en passwordtextbox. Jeg har testet det med en anden Windowsbruger end mig selv og det virker.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester