Dateien löschen mit JSP

Bash, Shell, PHP, Python, Perl, CGI
schl
Posts: 343
Joined: 2003-02-05 11:26
Location: München/Unterschleißheim

Dateien löschen mit JSP

Post by schl » 2004-09-29 18:47

hallo liebe java freunde,

ich würde gern dateien (bilddateien) mit einer jsp datei löschen. folgendes habe ich programmiert:

von einer datei a wird der parameter dateiname an eine zweite datei übergeben. diese zweite datei soll quasi die datei reel auf dem server löschen. hier noch der code der zweiten datei:

Code: Select all

<%@page language="Java" contentType="text/html" %>
<%@page import="java.io.File" %>
<%
  File file = new File('<%=request.getParameter("dateiname")%>');
  boolean deleted = file.delete();
  if (deleted) {
    out.print("Datei gelöscht.");
  }
  else {
    out.print("Datei nicht gelöscht.");
  }
%>
leider funktioniert das nicht. folgende fehlermeldung wird ausgegeben:

Code: Select all

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 3 in the jsp file: /schwegler/admin/TMPrdjhv4tajh.jsp

Generated servlet error:
    [javac] Compiling 1 source file

D:xampplitejakarta-tomcat-4.1.27workStandalonelocalhost-chl.local_schwegleradminTMPrdjhv4tajh_jsp.java:45: unclosed character literal
  File file = new File('<%=request.getParameter("dateiname"
                       ^



An error occurred at line: -1 in the jsp file: null

Generated servlet error:
D:xampplitejakarta-tomcat-4.1.27workStandalonelocalhost-chl.local_schwegleradminTMPrdjhv4tajh_jsp.java:47: ')' expected
    } catch (Throwable t) {
    ^
2 errors


	at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:130)
	at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:293)
	at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:353)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:370)
	at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:473)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:190)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:577)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
	at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:263)
	at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:360)
	at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:604)
	at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:562)
	at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:679)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
	at java.lang.Thread.run(Thread.java:534)
auf mit doppelten anführungszeichen funktioniert das nicht. kann mir hier jemand helfen? danke schonmal im voraus...
Last edited by schl on 2004-09-30 08:05, edited 1 time in total.

loomit
Posts: 6
Joined: 2002-09-25 12:05
Location: München

Re: Dateien löschen mit JSP

Post by loomit » 2004-09-29 22:43

Hi,

nach einem verschlafenen Blick drauf, hast Du übersehen die Klammer nach
"dateiname" wieder zu schliessen.

Code: Select all

 File file = new File('<%=request.getParameter("dateiname"%>');
btw kannst du dir das anlegen des boolean

Code: Select all

boolean deleted = file.delete(); 
sparen und stattdessen einfach

Code: Select all

if (file.delete()) 
schreiben.

gruss

loomit[/i]

schl
Posts: 343
Joined: 2003-02-05 11:26
Location: München/Unterschleißheim

Re: Dateien löschen mit JSP

Post by schl » 2004-09-30 06:52

hallo loomit, die klammer war dabei (siehe ganz oben) :?:

makue
Posts: 17
Joined: 2003-11-27 07:39

Re: Dateien löschen mit JSP

Post by makue » 2004-09-30 07:12

Aber nur eine, Du musst auch 2 schließen, wenn Du 2 geöffnet hast!

schl
Posts: 343
Joined: 2003-02-05 11:26
Location: München/Unterschleißheim

Re: Dateien löschen mit JSP

Post by schl » 2004-09-30 08:05

sorry, war ein schreibfehler hier im forum. die syntax im script ist ok.

stefanpropehan
Posts: 335
Joined: 2002-12-17 22:25
Location: Berlin

Re: Dateien löschen mit JSP

Post by stefanpropehan » 2004-09-30 09:05

Code: Select all

<%
  File file = new File('<%=request.getParameter("dateiname")%>');
 ....
%>
kann nicht funtzen....ein jsp tag (<%) im jsp tag (<%) geht nicht....

bin kein Java Programmierer - aber versuche es mal so (sollte das nicht gehen must du noch den Parameter für den File Constructor noch nach Typ String Casten)

Code: Select all

<%
  File file = new File(request.getParameter("dateiname"));
 ....
%>
Stefan

schl
Posts: 343
Joined: 2003-02-05 11:26
Location: München/Unterschleißheim

Re: Dateien löschen mit JSP

Post by schl » 2004-10-01 07:01

@stefanpropehan: damit hat es geklappt. zumindest ist die fehlermeldung weg. allerdings löscht er die datei noch nicht. hat noch jemand eine idee, oder so etwas ähnliches schon umgesetzt?

duergner
Posts: 923
Joined: 2003-08-20 11:30
Location: Pittsburgh, PA, USA

Re: Dateien löschen mit JSP

Post by duergner » 2004-10-01 08:30

Kommt denn vielleicht zur Laufzeit ne Fehlermeldung? Evtl. macht die ja der SecurityManager einen Strich durch die Rechnung?

stefanpropehan
Posts: 335
Joined: 2002-12-17 22:25
Location: Berlin

Re: Dateien löschen mit JSP

Post by stefanpropehan » 2004-10-01 09:06

Ja wird denn eine Exception ausgelöst? Fehlermeldung?

Nimmst du nur den Dateinamen als Parameter? Versuche mal den Dateinamen + Pfad zur Datei, beim erzeugen des File Objekts zu übergeben...

Stefan

schl
Posts: 343
Joined: 2003-02-05 11:26
Location: München/Unterschleißheim

Re: Dateien löschen mit JSP

Post by schl » 2004-10-01 10:29

eine fehlermeldung gibt es nicht mehr. es erfolgt einfach nur die ausgabe "datei nicht gelöscht".

hatte auch schon an den securitymanager gedacht. allerdings finde ich nirgends einen log-eintrag oder ähnliches. außerdem habe ich zu diesem thema auch noch nicht so viel gelesen, um mit sicherheit zu sagen, dass es das ist.

an das script wird im moment nur der dateiname übergeben, ohne pfad. werde ich aber mal versuchen...

olaf.dietsche
Posts: 401
Joined: 2002-12-19 02:06
Location: Siegburg

Re: Dateien löschen mit JSP

Post by olaf.dietsche » 2004-10-01 15:54

Hast du schon mit getAbsolutePath() überprüft, ob du die richtige Datei hast?

schl
Posts: 343
Joined: 2003-02-05 11:26
Location: München/Unterschleißheim

Re: Dateien löschen mit JSP

Post by schl » 2004-10-01 20:52

ich habe den code mal folgendermaßen geändert:

Code: Select all

<%@page language="Java" contentType="text/html" %>
<%@page import="java.io.*" %>
<%@page import="javax.servlet.*"%>
<%
String pfad = application.getRealPath("/");
String datei = request.getParameter("dateiname");

  File file = new File(pfad+datei);
  boolean deleted = file.delete();
  if (deleted) {
    out.print("Datei gelöscht.");
  }
  else {
    out.print("Datei nicht gelöscht.");
  }
%>
allerdings immer noch das gleiche. als ergebnis kommt Datei nicht gelöscht

die jsp datei und die zu löschende datei liegen im selben verzeichnis

schl
Posts: 343
Joined: 2003-02-05 11:26
Location: München/Unterschleißheim

Re: Dateien löschen mit JSP

Post by schl » 2004-10-02 13:38

ok, ich habs jetzt :-)

Code: Select all

<%@page language="Java" contentType="text/html" %>
<%@page import="java.io.*" %>
<%@page import="javax.servlet.*"%>
<html>
<head>
</head>
<body>
<h1>Delete File</h1>
<%
   String pfad = application.getRealPath("/schwegler/admin");
   String datei = "/" + request.getParameter("dateiname");
   String dateiname = pfad+datei;
   File file = new File(dateiname);
%>
<%
     out.print("Dateiname=" + dateiname);
     boolean deleted = file.delete();
     if (deleted) {
       out.print("Datei gelöscht.");
     }
     else {
       out.print("Datei nicht gelöscht.");
     }
%>
</body>
</html>