03. april 2004 - 19:22Der er
16 kommentarer og 1 løsning
Tjek eksistens af fil
-Hej Eksperter...
-Jeg har denne form, som skal sende en billed-sti videre til en ASP-side, som gemmer billedet på serveren med noget aspImage, og den er sat til automatisk at overskrive billeder i den mappe, det gemmes i, hvis de har samme filnavn. Nu vil jeg så gerne have sat en lille kode på SUBMIT-knappen, som, når man klikker på den, tjekker i mappen 'fileupload', om der er billeder med samme filnavn, som det, man er ved at uploade, og hvis der ER en fil med samme navn, så skal man blive stillet spørgsmålet 'Billedet findes allerede - vil du overskrive?' i en pop-up-meddelelse.
Hvis der i mappen 'Fileupload' eksisterer filer med samme filnavn, som i 'Fileupload_file'-boksen, skal man blive stillet spørgsmålet 'Billedet findes allerede - vil du overskrive?', når man klikker SUBMIT.
Man vi være nød til at gemme filen afligevel, da det bliver en blanding af Server side og Client Side script. Og sever side udføre altid før client side, så man kan ikke lige stille brugeren et spørgsmål undervej.
Så vidt jeg lige kan se har du 2 muligheder.
1. Tjek filnavet, Gem filen (nytnavn), lav en dialogbox som spørger og submitter endnu engang med Ja/Nej til om filen skal overskrives. Skal den overskrives copy det nye filnavn over i det gamle filnavn.
2. Lav en checkbox på form'en om filen skal overskrives hvis den findes. så det meget lettere at lave koden :)
Ja, men problemet er bare, at den kode, jeg har anskaffet mig, var en temmelig avanceret gratis-kode... Og jeg har siddet længe og stirret på den... Jeg aner ikke, hvad jeg skulle ændre i den for at få det til at virke...
Hmmm... Er det ikke muligt først at sende brugeren til EN side, hvor brugeren vælger billedet og trykker 'submit', hvorefter den tjekker i mappen 'fileupload' om der er andre filer med navnet, og hvis der ER det, skal den lave en pop-up, og hvis man så vælger at gå videre kommer man til den RIGTIGE side, så man skal vælge billedet en gang til og trykke 'SUBMIT' før billedet gemmes... Altså to sider, hvor den ene tjekker og den anden gemmer...?
Du kan godt lave det på en anden måde end først at sende brugeren videre til en ny side. Du kan lave en popup som tjekker om filen eksisterer og derefter returnerer enten sandt eller falsk. På den måde behøver du heller ikke tænke på hvordan du skal få din gratis kode til at virke.
Du skal dog være godt bekendt med brug af clientside scripting (JavaScript).
-Jeg prøvede den der 'Fileexists.asp'-side, men kan ikke helt få det til at virke...
-Min bruger er først på en side med en FORM hvori der er et 'fil-felt' med en 'gennemse'-knap ved siden af,og når brugeren har valgt en fil og trykket på 'SUBMIT'-knappen, sendes han til en asp-side, hvor der køres denne kode:
<html><head></head><body><% dim fs set fs=Server.CreateObject("Scripting.FileSystemObject") if fs.FileExists '" & Request.Form("billedkontrol") & "'=true then response.write("Filen eksisterer allerede!") else response.write("Filen er ikke før blevet gemt!") end if set fs=nothing %> </body></html>
-Men det virker ikke, ogjeg er heller ikke særlig stærk i det... Hva' gør jeg galt? (Feltet i formen HEDDER 'Billedkontrol'!)
Tja... Når jeg logger på min ftp kan jeg vælge mellem flere mapper... Den ene hedder WWW... (Det må være roden, ikke?) Men mappen ligger ikke under WWW, men derimod under bit-city/upload/fileupload!
og når du logger på din ftp kan du vælge mellem www og bit-city ikke?
Så skal din fil se sådan her ud:
<html><head></head><body> <% dim fs set fs=Server.CreateObject("Scripting.FileSystemObject") if fs.FileExists('/upload/fileupload/" & Request.Form("billedkontrol") & "')=true then response.write("Filen eksisterer allerede!") else response.write("Filen er ikke før blevet gemt!") end if set fs=nothing %> </body></html>
Nå nej... Det ville jo aldrig virke... For i boksen står der eks.: 'C:/dokumenter/billeder/billednavnet.jpg'... Og i mappen på serveren hedder billedet jo bare 'billedet.jpg'!
<html><head></head><body> <% dim fs set fs=Server.CreateObject("Scripting.FileSystemObject") if fs.FileExists("/upload/fileupload/" & Request.Form("billedkontrol"))=true then response.write("Filen eksisterer allerede!") else response.write("Filen er ikke før blevet gemt!") end if set fs=nothing %> </body></html>
Nu giver den ikke nogen fejl, men den påstår, at der ikke er nogle gemte filer, uanset hvad jeg skriver! Jeg har også prøvet bare at ændre filnavnet til 'filnavn/', men stadig intet resultat!
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.