Avatar billede mik28 Seniormester
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?
Avatar billede mik28 Seniormester
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>");
Avatar billede arne_v Ekspert
12. marts 2003 - 22:21 #2
File.delete
Avatar billede arne_v Ekspert
12. marts 2003 - 22:22 #3
Altså:

(new File(filnavn)).delete();
Avatar billede mik28 Seniormester
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>");
           
            }
Avatar billede arne_v Ekspert
12. marts 2003 - 22:34 #5
Hvis url indeholder et lokalt filnavn, så burde det virke.
Avatar billede mik28 Seniormester
12. marts 2003 - 22:35 #6
filen ligger i et bestemt bibliotek
Avatar billede mik28 Seniormester
12. marts 2003 - 22:40 #7
Det som bekømre mig at hvordan den kan vide hvor den fil er den skal slette
Avatar billede mik28 Seniormester
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>");
           
            }
Avatar billede arne_v Ekspert
12. marts 2003 - 22:41 #9
Hvis url ikke indeholder directory skal du bruge:
(new File(fixeddir + url)).delete();
Avatar billede mik28 Seniormester
12. marts 2003 - 22:41 #10
url indeholder kun navnet på filen
Avatar billede arne_v Ekspert
12. marts 2003 - 22:46 #11
Så sætter du bare et fixeddirectory ind i navnet som ovenfor.
Avatar billede mik28 Seniormester
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();
                    }
Avatar billede arne_v Ekspert
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)
Avatar billede mik28 Seniormester
12. marts 2003 - 22:50 #14
Jeg gør et eller andet forkert for den sletter ikke filen :-(
Avatar billede mik28 Seniormester
12. marts 2003 - 22:52 #15
music ligger i roden på sitet
Avatar billede mik28 Seniormester
12. marts 2003 - 22:56 #16
Den kommer slet ikke ind i if rs.next
Avatar billede arne_v Ekspert
12. marts 2003 - 22:59 #17
Hvis music ligger i roden var:

String dir = "/music/";

måske bedre.
Avatar billede arne_v Ekspert
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.
Avatar billede mik28 Seniormester
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
Avatar billede mik28 Seniormester
12. marts 2003 - 23:08 #20
min Edit.class ligger i /appname/WEB-INF/classes
music ligger i /appname/music
Avatar billede arne_v Ekspert
12. marts 2003 - 23:10 #21
Finder SELECT ikke noget eller kikser delete ?

[har du skiftet til absolut sti ?]
Avatar billede mik28 Seniormester
12. marts 2003 - 23:11 #22
Select finder det den gerne skulle.

Delete kikser
Avatar billede mik28 Seniormester
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>");
                }
Avatar billede arne_v Ekspert
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.
Avatar billede mik28 Seniormester
12. marts 2003 - 23:16 #25
hmmm. Den siger jeg er i tomcat/bin
Avatar billede arne_v Ekspert
12. marts 2003 - 23:18 #26
Men filnavnet set fornuftigt ud, eksisterer og er ikke readonly ?
Avatar billede arne_v Ekspert
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:)
Avatar billede mik28 Seniormester
12. marts 2003 - 23:21 #28
Nu virker det. Jeg forstår bare ikek hvordan jeg havnede i /bin
Avatar billede mik28 Seniormester
12. marts 2003 - 23:22 #29
String dir = "../webapps/mortallovebeta/music/";
Avatar billede arne_v Ekspert
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 ?
Avatar billede mik28 Seniormester
12. marts 2003 - 23:25 #31
næ, jeg troede bare jeg skulle angive i forhold til hvor Edit.class ligger
Avatar billede mik28 Seniormester
12. marts 2003 - 23:26 #32
Tak igen,igen,igen for din hjælp. DET ER SÅ FEDT DET VIRKER !!!!
Avatar billede mik28 Seniormester
12. marts 2003 - 23:30 #33
Jeg har så meget respekt for folk som dig.
Avatar billede mik28 Seniormester
12. marts 2003 - 23:32 #34
I første omgang var det en banal SQL fejl fra min side
det skulle have været
Avatar billede mik28 Seniormester
12. marts 2003 - 23:34 #35
Jeg sætter stor pris på din hjælp, det skal du bare vide
Avatar billede arne_v Ekspert
12. marts 2003 - 23:34 #36
Jeg er da glad for at kunne hjælpe.
Avatar billede mik28 Seniormester
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
Avatar billede arne_v Ekspert
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)
Avatar billede mik28 Seniormester
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
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