Avatar billede jens_elling Nybegynder
24. juli 2001 - 12:40 Der er 42 kommentarer og
1 løsning

FTP oveførsel

Jeg skal bruge en lille komponent/script der kan overføre og omdøbe en fil fra en ftp server til en lokal maskine.

nogen ideer??
Avatar billede oswald Nybegynder
24. juli 2001 - 12:58 #1
Hvilket styresystem bruger du?
Avatar billede jens_elling Nybegynder
24. juli 2001 - 13:00 #2
Alle sider ligger på NT med IIS og alle sider er i ASP

/Jens
Avatar billede oswald Nybegynder
24. juli 2001 - 13:03 #3
vil du ha\' at brugeren skal gå ind på en side og så få downloaded en fil fra en FTP server til sin lokale disk, eller vil du kører et script på en server som så skal downloade en fil fra en anden server?
Avatar billede jens_elling Nybegynder
24. juli 2001 - 13:07 #4
Det skal være sådan når brugeren klikker på et link, så modtager han en fil fra ftp server, filen skal helst være omdøbt fra *.dat til *.tif, så overførslen er fra server til bruger.
Avatar billede oswald Nybegynder
24. juli 2001 - 13:18 #5
Selve download\'ningen kan du vist klarer med en normal link \' <a href=\"ftp:\\\\din.server\\din.fil\"> \' men ombødningen den kærver vist at du hiver filen ind på din webserver og sætter nogle metatags på.
Avatar billede jens_elling Nybegynder
24. juli 2001 - 13:31 #6
lyder fornuftigt, lige nu bruger jeg <a href=\"ftp:\\\\din.server\\din.fil\">... men får ikke omdøbt filen:)

har du et par små eksempler på dine tags??
Avatar billede oswald Nybegynder
24. juli 2001 - 13:38 #7
Jeg har dem klar til dig. Et endeligt svar? Måske, det er op til dig.

\'Først et nyt filnavn
Response.AddHeader \"Content-Disposition\", \"attachment;filename=NyFil.tif\"

\'Derefter udskriver vi typen af indhold, så filen bliver sendt til det rigtige program Response.ContentType = \"application/.tif\"

\'der efter skal du skrive filen som binary hvis det var fra en database ville du skrive noget i stilen med.

Response.BinaryWrite rs(\"dataholder\")

\'men fra en FTP server ved jeg det ikke rigtigt, den må jeg tænke over :).

Det virker ikke lige godt på alle browsere
Avatar billede jens_elling Nybegynder
25. juli 2001 - 07:35 #8
Jeg mangler stadig sammenhængen, hvis du har lyst til at lave et færdigt forslag, jeg henter filerne direkte fra serveren med <a href=\"ftp:\\\\din.server\\din.fil\"> (din.fil bestemmer jeg ud fra en DB sti)

hvis det kommer til at virke dobler jeg pointne op:)
Avatar billede oswald Nybegynder
25. juli 2001 - 10:00 #9
Lyder godt. Jeg skal lige høre, ligger dine filer på den samme server eller skal de hentes via ftp?
Avatar billede jens_elling Nybegynder
25. juli 2001 - 10:08 #10
De skal hentes via ftp, de ligger på en unix server og jeg sidder på en win 2k..
Avatar billede oswald Nybegynder
25. juli 2001 - 11:11 #11
Jeg har fået følgende til at virke, men hvis jeg erstatter \'server.MapPath(\"\\help.gif\")\' med en FTP adresse får jeg en fejl, fejlen skyldes måske rettigheder som jeg ikke kan ændre, men måske har du flere rettigheder. Hvis ikke må vi prøve noget andet. Læs http://support.microsoft.com/support/kb/articles/q260/2/60.asp

<%@ Language=VBScript %>
<%
    \'Set the content type to the specific type that you are sending.
    Response.AddHeader \"Content-Disposition\", \"attachment;filename=NyFil.gif\"
    Response.ContentType = \"application/.gif\"

    Const adTypeBinary = 1
    Dim strFilePath

    strFilePath = server.MapPath(\"\\help.gif\")

    Set objStream = Server.CreateObject(\"ADODB.Stream\")
    objStream.Open 
    objStream.Type = adTypeBinary
    objStream.LoadFromFile strFilePath

    Response.BinaryWrite objStream.Read (objstream.Size)

    objStream.Close
    Set objStream = Nothing
    Response.Flush
    Response.End
%>
Avatar billede oswald Nybegynder
25. juli 2001 - 11:12 #12
Du skal selvføllelig lige ændre Response.AddHeader og Response.ContentType så de passer til dine filer.
Avatar billede jens_elling Nybegynder
25. juli 2001 - 11:36 #13
Kan man styre hvor den lægger filen, eks. c:\\temp den skal bare gemme filen, den skal ikke spørge om hvor og hvordan:)

ellers ser det godt ud, har ikke testet med ftp endnu.. men bliver i troen.
Avatar billede oswald Nybegynder
25. juli 2001 - 11:39 #14
Nej det kan du vist ikke. Hvis brugeren fravælger \'ask before opening this type of file\' i download windoet, så bliver de kun spurt om hvor den skal ligge, men du kan vist ikke slippe helt.
Avatar billede jens_elling Nybegynder
25. juli 2001 - 12:25 #15
Det virker åbentbart ikke med ftp:( den kommer også og spørger om hvor den skal gemme xxx.asp filen henne, så jeg får ikke muligheden for at vælge \'ask before opening this type of file\' fra.

flere gode ideer???? :)
Avatar billede oswald Nybegynder
25. juli 2001 - 13:47 #16
Jeg tror ikke du skal satse på at få den til at downloade uden at brugeren skal gøre noget, det ville være en hvis du kunne. Prøv at forestil dig at downloade en virus og omdøbe den til AutoExec.bat.

MHT. Ftp, har du så kikket på den Microsoft side jeg refererede til ?
Avatar billede jens_elling Nybegynder
25. juli 2001 - 14:05 #17
jeps.. har set på siden, det er et intranet så alle rettigheder er givet..

med hensyn til omdøbningen og gemningen.. det var derfor at jeg valgte ftp, eks. get xxx.fil c:\\temp\\yyy.fil, her virker det uden spørgsmål af nogen art:) problemet er bare at få iis til forstå at den også kan det:)
Avatar billede oswald Nybegynder
25. juli 2001 - 14:35 #18
Problemet er ikke IIS\'en, problemet er browseren og defineringen af HTML standarten. Grund ideen er at et site ikke må kunne gøre noget ved en klient uden at brugeren godtager dette, og at downloade en fil er, i aller højste grad, at gøre noget. Så vidt jeg ved kan man ikke engang gører det med Java.
Avatar billede jens_elling Nybegynder
25. juli 2001 - 15:12 #19
hvad med at dl fra server til server og så bruge filsystemobject til at kopiere filen direkte??
Avatar billede oswald Nybegynder
25. juli 2001 - 15:16 #20
Hvis du kan bruge Filsystemobject så burde du også kunne specificerer filnavnet istedet for server.MapPath(\"\\help.gif\"). Jeg havde forstået det sådan at der kun var FTP kontakt mellem de to servere.
Avatar billede jens_elling Nybegynder
26. juli 2001 - 07:28 #21
der er pt kun ftp adgang mellem serverne, men der findes en ftp komponent der kan overføre filer mellem servere, dette kan den gøre uden nogen form for brugeraktion, så kunne man bruge denne komponent til at overføre filen til en mappe på serveren og derefter så bruge filsystemobject til at kopierre og omdøbe...

kender du filsystemobject??
Avatar billede jens_elling Nybegynder
26. juli 2001 - 07:29 #22
Btw. komponenten hedder \'AspInet\'..
Avatar billede oswald Nybegynder
26. juli 2001 - 09:35 #23
God morgen Jens. Der er nogen der starter tidligt ;)

Jeg kender ikke lige ASPInet. Men jeg kender software artisian\'s AspTear som kan noget af det samme.

Hvor mange filer har du og hvor ofte ændre de sig?
Du kan jo evt. bruge NT\'s interne FTP funktion.
Avatar billede jens_elling Nybegynder
26. juli 2001 - 10:08 #24
Jeps.. alt for tidligt:)

det drejer sig om een fil af gangen... brugeren fåe en liste med dokumenter(img. filer) op og kan så vælge at se filen..  det er her den skal overføres og omdøbes..

kan man bruge nt\'s ftp inde i en asp side?
Avatar billede oswald Nybegynder
26. juli 2001 - 10:19 #25
Men hvor mange filer drejer det sig maksimalt om. Det som jeg overvejer er om det kan betale sig at lave et mirror på webserveren.
MHT. ftp fra en ASP side så kan du kører stort set alt fra en asp side ved at bruge kode i stilen med følgende. Det er farligt, men det kan lade sig gøre.

set dbShell = CreateObject(\"WScript.Shell\")
z = dbShell.Run(\"cmd.exe /c c:\\Program Files\\FrontPage\\bin\\fpsrvadm /param\", 1, true)
if z or Err.number then Response.Write \"There\'s been an error while running this VBS script\"
if Err.number = -2147024894 then
  Response.Write \"File not found\"
else
  Response.Write \"Completed succesfully\"
end if
set dbShell = nothing
Avatar billede jens_elling Nybegynder
26. juli 2001 - 10:25 #26
maksimalt drejer det sog om pt. 1.200.000 filer * 2 og der kommer ca. 500 nye til om dagen:)

mht. til sikkerheden.. er det jo et intranet, så næsten alt er tilladt:)
Avatar billede oswald Nybegynder
26. juli 2001 - 10:33 #27
Ok det er vist lidt for mange filer til at lave et mirror :).

Mht. sikkerhed, så er problemet ikke for meget sikkerhed, snare for lidt.

Så skal vi bare ha\' lavet en fil med kommandoer til FTP programmet og ha\' ændret i det sidste omgang kode og så er vi oppe og kører.
Avatar billede oswald Nybegynder
26. juli 2001 - 10:36 #28
Dette skulle kunne lave selve kaldet. Hvormeget ved du om FTP kommandoer?

set dbShell = CreateObject(\"WScript.Shell\")
z = dbShell.Run(\"cmd.exe /c ftp -i -s:<Script navn> <din server>\", 1, true)
if z or Err.number then Response.Write \"There\'s been an error while downloading the image\"
if Err.number = -2147024894 then
  Response.Write \"File not found\"
else
  Response.Write \"Completed succesfully\"
end if
set dbShell = nothing
Avatar billede jens_elling Nybegynder
26. juli 2001 - 10:44 #29
lidt, jeg kan da bruge get og cd :)

er det nødvendigt at køre et script?

problemet løses ikke helt med dette, filen skal stadig over på brugerens maskine og åbnes..
Avatar billede jens_elling Nybegynder
26. juli 2001 - 11:28 #30
jeg prøver lige at lave et script, eneste problem er umiddelbart at det er en forskellig fil hver gang...
Avatar billede oswald Nybegynder
26. juli 2001 - 13:05 #31
Prøv denne blok kode med din server og filer. Jeg er ikke sikker på at den virker, men du burde have komponenten på din maskine.

    Dim test
    Set test = CreateObject(\"InetCtls.inet\")
    test.Protocol = 2 \'icftp
    test.RemoteHost = \"ftp.test.com\"
    test.RemotePort = 21
    test.Document = \"test.zip\"
    response.BinaryWrite test.GetChunk(10000)
Avatar billede jens_elling Nybegynder
26. juli 2001 - 13:14 #32
Får fejlen:

ActiveX component can\'t create object: \'InetCtls.inet\'

:(

er det en komponent der er til at hente??
Avatar billede oswald Nybegynder
26. juli 2001 - 13:19 #33
Det skulle være en standart MS komponent. Den siger den kommer med SP4, men min maskine er en 2K og der er vist kun sp1 endnu. mmmm.
Kik efter en fil der hedder noget i stilen med
c:\\WINNT\\System32\\MSINET.OCX (Det kan være den ikke er registreret.)
Avatar billede jens_elling Nybegynder
26. juli 2001 - 13:26 #34
jeg har den ikke på serveren, det er en standart win 2k med sp1..
Avatar billede oswald Nybegynder
26. juli 2001 - 13:38 #35
Ok, jeg kan se at den muligvis er kommet med word 2K.

Kik på følgende side og søg efter MSINET.OCX, så får du en liste af produkter som installerer komponenten, måske har du en af dem. Ellers kan jeg måske sende den til dig.

http://support.microsoft.com/servicedesks/fileversion/dllinfo.asp?sd=MSDN
Avatar billede jens_elling Nybegynder
27. juli 2001 - 07:40 #36
Go\' morgen....

Du må meget gerne sende den på je@sbf.dk...

jeg tager lige og skruer lidt mere op for pointne..
Avatar billede jens_elling Nybegynder
27. juli 2001 - 07:41 #37
man kan åbentbart kun justere point een gang... opretter ny spm. senere:)
Avatar billede jens_elling Nybegynder
01. august 2001 - 07:47 #38
Tjaaaa... nu har jeg prøvet med installation af visual studio og sr 6, nu melder den ikke fejl længre men den gemmer heller ikke filen:) (ikke nogen steder jeg kan finde den;))

Avatar billede oswald Nybegynder
01. august 2001 - 09:52 #39
Hej Jens. jeg var næsten blevet helt bekymret for om du var gået hjemmefra i nedtrykt sindstilstand ;).

Hvis du bruger
response.BinaryWrite test.GetChunk(<Fil størrelse>)
så bliver filen ikke gemt men skulle gerne overføres direkte til siden i binært format.
Avatar billede jens_elling Nybegynder
01. august 2001 - 12:36 #40
Hehe... det var tæt på, havde lige gang i et par projekter mere..

filstørrelsen er forskellig på alle filer og jeg er stadig nødt til at omdøbe den til noget brugbart (*.tif)
Avatar billede jens_elling Nybegynder
01. august 2001 - 13:46 #41
tro det eller ej med det er faktisk ved at virke nu:)

ved du hvordan man starter et program på brugerens maskine.. eks. kodakprv.exe ??
Avatar billede oswald Nybegynder
01. august 2001 - 13:53 #42
Nååååår det var da en let lille ting.... NOOOOOOT. Tillykke. Hvad gik der galt? ;)

Åbner den billedet i browseren, åbner den det i et andet program eller kommer den med den normale \"save eller run\" dialog.

Den ultimative måde at starte et program på klientens maskine må være at lave en ActiveX Komponent og bruge den på siden, men det ved jeg desværre ikke meget om, endnu ;).
Avatar billede jens_elling Nybegynder
02. august 2001 - 07:53 #43
hehe... er faktisk lidt tilbage til en kombination af hvad vi/du har kommet med af forslag på danne side og den komponent jeg startede med, lavede et lille kompromi ved at oprette en cache mappe på min IIS og gemme filerne her efter jeg har omdøbt dem, så kan brugeren åbne dem herfra.

Eneste problem er nu bare at få browsenen til at åbne kodakprv.exe og bruge den til visning af filen, lige nu bruger den et eller andet internt i browseren, her er problemet bare at man kun kan se een side af filen og tifferne er på op til 300 sider store:)
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
Kurser inden for grundlæggende programmering

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