12. marts 2003 - 22:18
Der er
38 kommentarer og 1 løsning
slette en fil
Hej Eksperter, På min side har jeg mulighed for at uploade filer. I det jeg gør det bliver filnavnet lagt i en db og senere brugt til at lave den rigtige link på den side hvor man så skal kunne downloade. Jeg har på den side hvor man skal kunne vedligeholde sitet så lavet det sådan at man kan slette linkene. Sagen er jo bare den at filerne jo bliver liggende på serveren. Jeg vil gerne have dem slettet. Hvordan gør jeg det?
Annonceindlæg fra Trustworks
Tillid i en Zero-Trust verden
Med voksende trusler, nye EU-krav og øget kompleksitet er cybersikkerhed nu en central ledelsesopgave på linje med strategi og økonomi.
12. marts 2003 - 22:20
#1
Jeg har en Edit klasse jeg bruger og det er i princippet her det skal foregå :-) else if(page.equals("tracks") && doedit.equals("delete")){ Vector vi = new Vector(); vi.addElement(tracksid); d.insertUpdate("DELETE FROM tracks WHERE id=?", vi); out.println("<HTML><body onload='document.showtracks.submit();'>"); out.println("<form method='post' name='showtracks' action='Editpage'>"); out.println("<input type='hidden' name='page' value='tracks'>"); out.println("</form>");
12. marts 2003 - 22:21
#2
File.delete
12. marts 2003 - 22:22
#3
Altså: (new File(filnavn)).delete();
12. marts 2003 - 22:30
#4
else if(page.equals("tracks") && doedit.equals("delete")){ Vector vi = new Vector(); vi.addElement(tracksid); ResultSet rs = d.select("SELECT url FROM tracks WHERE url=?", vi); if (rs.next(){ String url = rs.getString("url"); (new File(url)).delete(); } d.insertUpdate("DELETE FROM tracks WHERE id=?", vi); out.println("<HTML><body onload='document.showtracks.submit();'>"); out.println("<form method='post' name='showtracks' action='Editpage'>"); out.println("<input type='hidden' name='page' value='tracks'>"); out.println("</form>"); }
12. marts 2003 - 22:34
#5
Hvis url indeholder et lokalt filnavn, så burde det virke.
12. marts 2003 - 22:35
#6
filen ligger i et bestemt bibliotek
12. marts 2003 - 22:40
#7
Det som bekømre mig at hvordan den kan vide hvor den fil er den skal slette
12. marts 2003 - 22:40
#8
Det ser således ud nu :-) else if(page.equals("tracks") && doedit.equals("delete")){ Vector vi = new Vector(); vi.addElement(tracksid); ResultSet rs = d.select("SELECT url FROM tracks WHERE url=?", vi); try { if (rs.next()){ String url = rs.getString("url"); (new File(url)).delete(); } } catch (SQLException s) { out.println("<h3>SQL fejl: " + s.toString() + " " + s.getErrorCode() + " " + s.getSQLState() + "</h3>"); } d.insertUpdate("DELETE FROM tracks WHERE id=?", vi); out.println("<HTML><body onload='document.showtracks.submit();'>"); out.println("<form method='post' name='showtracks' action='Editpage'>"); out.println("<input type='hidden' name='page' value='tracks'>"); out.println("</form>"); }
12. marts 2003 - 22:41
#9
Hvis url ikke indeholder directory skal du bruge: (new File(fixeddir + url)).delete();
12. marts 2003 - 22:41
#10
url indeholder kun navnet på filen
12. marts 2003 - 22:46
#11
Så sætter du bare et fixeddirectory ind i navnet som ovenfor.
12. marts 2003 - 22:48
#12
sådan ikke if (rs.next()){ String dir = "../music/"; String url = rs.getString("url"); (new File(dir+url)).delete(); }
12. marts 2003 - 22:50
#13
F.eks. ja. (jeg formoder at du har styr på om ../music er rigtigt i forhold til hvor programmet kører)
12. marts 2003 - 22:50
#14
Jeg gør et eller andet forkert for den sletter ikke filen :-(
12. marts 2003 - 22:52
#15
music ligger i roden på sitet
12. marts 2003 - 22:56
#16
Den kommer slet ikke ind i if rs.next
12. marts 2003 - 22:59
#17
Hvis music ligger i roden var: String dir = "/music/"; måske bedre.
12. marts 2003 - 23:01
#18
Hvis den SELECT ikke finder nogle URL's så er det næppe delete'ns skyld. Prøv og check om tracksid indeholder det rigtige. Og om en manuel SELECT kan finde noget.
12. marts 2003 - 23:04
#19
I første omgang var det en SQL fejl ResultSet rs = d.select("SELECT url FROM tracks WHERE id=?", vi); Men det virker stadig ikke
12. marts 2003 - 23:08
#20
min Edit.class ligger i /appname/WEB-INF/classes music ligger i /appname/music
12. marts 2003 - 23:10
#21
Finder SELECT ikke noget eller kikser delete ? [har du skiftet til absolut sti ?]
12. marts 2003 - 23:11
#22
Select finder det den gerne skulle. Delete kikser
12. marts 2003 - 23:11
#23
try { if (rs.next()){ String dir = "/music/"; String url = rs.getString("url"); System.out.println(dir+url); (new File(dir+url)).delete(); } } catch (SQLException s) { out.println("<h3>SQL fejl: " + s.toString() + " " + s.getErrorCode() + " " + s.getSQLState() + "</h3>"); }
12. marts 2003 - 23:13
#24
Prøv med: System.out.println("vi er i " + System.getProperty("user.dir")); System.out.println("vi forsøger at slette " + dir + url); og se om det ser fornuftigt ud.
12. marts 2003 - 23:16
#25
hmmm. Den siger jeg er i tomcat/bin
12. marts 2003 - 23:18
#26
Men filnavnet set fornuftigt ud, eksisterer og er ikke readonly ?
12. marts 2003 - 23:18
#27
Vildt gæt - kunne du prøve med: String dir = "C:/music/"; (eller D: hvis de ligger på D:)
12. marts 2003 - 23:21
#28
Nu virker det. Jeg forstår bare ikek hvordan jeg havnede i /bin
12. marts 2003 - 23:22
#29
String dir = "../webapps/mortallovebeta/music/";
12. marts 2003 - 23:23
#30
Du starter vel Tomcat i tomcat/bin, så det er vel ikke overraskende at Tomcat har det som default directory ?
12. marts 2003 - 23:25
#31
næ, jeg troede bare jeg skulle angive i forhold til hvor Edit.class ligger
12. marts 2003 - 23:26
#32
Tak igen,igen,igen for din hjælp. DET ER SÅ FEDT DET VIRKER !!!!
12. marts 2003 - 23:30
#33
Jeg har så meget respekt for folk som dig.
12. marts 2003 - 23:32
#34
I første omgang var det en banal SQL fejl fra min side det skulle have været
12. marts 2003 - 23:34
#35
Jeg sætter stor pris på din hjælp, det skal du bare vide
12. marts 2003 - 23:34
#36
Jeg er da glad for at kunne hjælpe.
12. marts 2003 - 23:37
#37
Jeg siger bare jeg sætter stor pris på det. Hvad der virker banalt for dig finder jeg ufatteligt svært
12. marts 2003 - 23:49
#38
Jeg kan skam også kvaje mig. Men lidt erfaring hjælper. Til september har jeg 20 års jubilæum med programmering. (jeg started med Fortran)
12. marts 2003 - 23:52
#39
Du skal bare vide at vi er nogle stykke i den dumme ende af linien som sætter stor pris på at have et forum som eksperten.dk at kunne spørge
Kurser inden for grundlæggende programmering