Avatar billede mik28 Seniormester
20. februar 2003 - 12:14 Der er 135 kommentarer og
1 løsning

Upload via web-side (servlets)

Jeg vil gerne have det til at virke så jeg kan oploade filer via en webside. Der er åbenbart et eller andet jeg ikke helt forstår. Det som der skal ske er at jeg vælger en fil, så trykker jeg på en knap og den pågældende fil bliver oploaded til et direktorat på en eller anden server. Jeg kører i øvrigt mine servlets på en tomcat server. Ind til videre har jeg forstået at jeg skal downloade com.oreilly.servlet pakken, men hvordan får jeg lagt den ind så jeg kan bruge den i forbindelse med tomcat?
Avatar billede arne_v Ekspert
20. februar 2003 - 12:25 #1
Det er rigtigt at der er noget kode i den til upload.

(jeg har dog aldrig selv brugt den).

Du skal putte den downloadede jar fil:
  - i external libraries (eller hvad det nu hedder) for dit projekt i
    din IDE, så du kan compiler
  - i enten server lib eller web app lib, så din app kan køre
Avatar billede arne_v Ekspert
20. februar 2003 - 12:28 #2
På en typisk win32 installation er server lib:
  C:\jakarta-tomcat-4.1.18\server\lib
og hvis din app hedder minapp så er web app lib:
  C:\jakarta-tomcat-4.1.18\webapps\minapp\WEB-INF\lib
(eller WEB-INF\lib i minapp.war hvis du bruger war fil)
Avatar billede mik28 Seniormester
20. februar 2003 - 12:31 #3
Jeg er stadig ikke med
Avatar billede mik28 Seniormester
20. februar 2003 - 12:34 #4
Jeg har en war fil. Min app ligger i tomcat4.0/webapps/MITSITE/WEB-INF/classes
Avatar billede mik28 Seniormester
20. februar 2003 - 12:35 #5
der ligger mine klasser
Avatar billede mik28 Seniormester
20. februar 2003 - 12:40 #6
Det ville være fedt hvis du gad kigge på det. Du kan se det her

http://www.web-oasen.dk/mortallovetest/servlet/Upload
Avatar billede arne_v Ekspert
20. februar 2003 - 12:48 #7
Jep. Den kan ikke finde com/oreilly/servlet/MultipartRequest.
Avatar billede arne_v Ekspert
20. februar 2003 - 12:49 #8
1)  Check som den jar fil du har fra O'reilly faktisk indeholder
    com/oreilly/servlet/MultipartRequest.class

2)  Sørg for at den jar fil ligger i tomcat4.0/webapps/MITSITE/WEB-INF/lib
    directory

Så burde det virke.
Avatar billede arne_v Ekspert
20. februar 2003 - 12:50 #9
Hvis O'Reilly filerne ikke er i en jar men ligger som class filer,
så skal den ligge som:
  tomcat4.0/webapps/MITSITE/WEB-INF/classes/com/oreilly/servlet/MultipartRequest.class
Avatar billede magoo20000 Nybegynder
20. februar 2003 - 12:54 #10
De ligger som en WAR fil
Avatar billede mik28 Seniormester
20. februar 2003 - 12:56 #11
Hej Martin
Avatar billede arne_v Ekspert
20. februar 2003 - 13:00 #12
magoo>

Som en war fil ? Det var sgu da upraktisk !

Umiddelbart lyder det som det er nemmest at udpakke den
war fil og så pakke alle class filerne ned i miks war fil.
Avatar billede mik28 Seniormester
20. februar 2003 - 13:02 #13
Jeg tror du misforstår mig lidt arne_v :-) Den eneste war fil jeg har er den jeg har fra oreilly
Avatar billede mik28 Seniormester
20. februar 2003 - 13:05 #14
kan du komme ind via den URL jeg har givet? Kan du se hvad det er som går galt?
Avatar billede magoo20000 Nybegynder
20. februar 2003 - 13:11 #15
Har du prøvet kun at deploye den war fil, som følger med O'Reilly?
Jeg kender ikke Tomcat, men kan de lige læse lidt på det!
Avatar billede magoo20000 Nybegynder
20. februar 2003 - 13:11 #16
Den kan, som arne var inde på, ikke finde Multi... klassen.
Avatar billede mik28 Seniormester
20. februar 2003 - 13:16 #17
Kommer du ikke på ICQ
Avatar billede mik28 Seniormester
20. februar 2003 - 13:18 #18
Hvorfor er det så svært at uploade en fil :-(
Avatar billede arne_v Ekspert
20. februar 2003 - 13:19 #19
Oh.

Du har kun O'Reilly WAR - ikke noget hjemmelavet kode.

Jeg kunne godt bruge den URL du angav og jeg fik fejl.

Det lyder umiddelbart mærkeligt at den WAR ikke virker.

Spørgsmål: er filen WEB-INF/classes/com/oreilly/servlet/MultipartRequest.class
i den WAR ?
Avatar billede mik28 Seniormester
20. februar 2003 - 13:23 #20
Det skulle den være, men jeg er ikke 100
Avatar billede mik28 Seniormester
20. februar 2003 - 13:25 #21
Nu har jeg gjort som du har anvist
Avatar billede mik28 Seniormester
20. februar 2003 - 13:25 #22
Prøv at uploade en fil nu
Avatar billede arne_v Ekspert
20. februar 2003 - 13:29 #23
Check lige.
Avatar billede mik28 Seniormester
20. februar 2003 - 13:29 #24
jeg får at vide at
java.lang.IllegalArgumentException: saveDirectory cannot be null
Avatar billede arne_v Ekspert
20. februar 2003 - 13:31 #25
Den fandt klassen nu !!!

Men der er en anden fejl:

Upload af fil


--------------------------------------------------------------------------------

Der skete en fejl under upload.
java.lang.IllegalArgumentException: saveDirectory cannot be null

Men det betyder at der et konfigurations-problem i forhold til
det directory filen skal gemmes i.

Koden virker nu.
Avatar billede magoo20000 Nybegynder
20. februar 2003 - 13:32 #26
Jeg arbejder med resin og bea wli og har der deployet war filen - her er der ingen problemer! Har lidt travlt nu, men kommer på senere i dag!
Avatar billede mik28 Seniormester
20. februar 2003 - 13:33 #27
Betyder det at jeg ikke kan skrive til det pågældende dir
Avatar billede mik28 Seniormester
20. februar 2003 - 13:35 #28
import com.oreilly.servlet.MultipartRequest;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.*;
import javax.servlet.http.*;

public class Uploadservlet extends HttpServlet
{

    public Uploadservlet()
    {
    }

    public void init(ServletConfig config)
        throws ServletException
    {
        super.init(config);
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException
    {
        response.setContentType("text/html");
        PrintWriter out = new PrintWriter(response.getOutputStream());
        out.println("<html>");
        out.println("<head><title>Uploadservlet</title></head>");
        out.println("<body>Get metoden underst&oslash;ttes ikke af servletten.");
        out.println("</body></html>");
        out.close();
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException
    {
        int result = 0;
        String fejltekst = null;
        response.setContentType("text/html");
        PrintWriter out = new PrintWriter(response.getOutputStream());
        out.println("<html>");
        out.println("<head><title>Fil-upload</title></head>");
        out.println("<body>");
        out.println("<H1>Upload af fil</H1><br><hr><br>");
        MultipartRequest multi = null;
        try
        {
            multi = new MultipartRequest(request, request.getParameter("/music"), 0x989680);
            out.println("Upload udf&oslash;rt.");
            out.println("filnavn : " + multi.getFilesystemName("uploadfile") + "<br>");
        }
        catch(Exception e)
        {
            out.println("Der skete en fejl under upload.<br>\n" + e.toString());
        }
        out.println("</body></html>");
        out.flush();
        out.close();
    }

    public String getServletInfo()
    {
        return "Uploadservlet Information";
    }
}
Avatar billede arne_v Ekspert
20. februar 2003 - 13:36 #29
Det kunne være manglende skrive adgang.

Men mere sandsyneligt, så har den slet ikke fået
en angivelse af hvor den skal gemme.
Avatar billede mik28 Seniormester
20. februar 2003 - 13:36 #30
multi = new MultipartRequest(request, request.getParameter("/music"), 0x989680);
Avatar billede mik28 Seniormester
20. februar 2003 - 13:37 #31
Jeg tror godt jeg kan se problemet

request.getParameter("/music") er vel egenligt noget vrøvl
Avatar billede arne_v Ekspert
20. februar 2003 - 13:41 #32
Ja - jeg kan ikke umiddelbart se hvor /music kommer ind i billedet.
Avatar billede mik28 Seniormester
20. februar 2003 - 13:42 #33
/music er det direktorat jeg gerne vil gemme i
Avatar billede arne_v Ekspert
20. februar 2003 - 13:43 #34
Hvis jeg læser:
  http://www.servlets.com/cos/javadoc/com/oreilly/servlet/MultipartRequest.html
korrekt så er 2. argument det directory der skal gemmes i.
Avatar billede arne_v Ekspert
20. februar 2003 - 13:43 #35
Jo men jeg tror du skal bruge:
  multi = new MultipartRequest(request, "/music", 0x989680);
Avatar billede arne_v Ekspert
20. februar 2003 - 13:45 #36
Fordi request.getParameter("/music") returnerer ikke
"/music" men derimod værdien af det felt på HTML formen
med navnet "/music".

Og når det felt ikke eksisterer, så returnerer den null.
Avatar billede mik28 Seniormester
20. februar 2003 - 13:46 #37
Feltet findes såmend :-)
Avatar billede mik28 Seniormester
20. februar 2003 - 13:47 #38
Damn *lol*
Avatar billede arne_v Ekspert
20. februar 2003 - 13:47 #39
Du kunne bruge den features hvis upload skulle anbringes i en af:
  /music1
  /music2
  /music3
fordi så lavede du et felt i formen med navn "musicdir" (det kunne
evt. være en SELECT så brugerne kun kunne vælge mellem de 3 muligheder).

Og så kunne du bruge:
  multi = new MultipartRequest(request, request.getParameter("musicdir"), 0x989680);

til at placere den uploadede fil i det directory som brugeren har
valgt.
Avatar billede mik28 Seniormester
20. februar 2003 - 13:48 #40
Det vil jeg også gerne, men i første omgang vil jeg bare gerne have den til at uploade til et dir :-)
Avatar billede arne_v Ekspert
20. februar 2003 - 13:48 #41
Du har ret feltet eksisterer !

Men feltet hedder "dir", det er værdien som er "music".

Altså:

  multi = new MultipartRequest(request, request.getParameter("dir"), 0x989680);
Avatar billede mik28 Seniormester
20. februar 2003 - 13:49 #42
multi = new MultipartRequest(request, "/music", 0x989680);
Avatar billede arne_v Ekspert
20. februar 2003 - 13:51 #43
Det burde virke.

Men:
  multi = new MultipartRequest(request, request.getParameter("dir"), 0x989680);
er lidt mere fleksibelt.
Avatar billede mik28 Seniormester
20. februar 2003 - 13:52 #44
Det kan jeg godt se, og sådan vil jeg også gerne lave det, men i første omgang vil jeg bare gerne have det til at virke
Avatar billede arne_v Ekspert
20. februar 2003 - 13:54 #45
Det burde også virke med den HTML du har idag.
Avatar billede mik28 Seniormester
20. februar 2003 - 13:55 #46
Ja ikke, men det gør det bare ikke :-(
Avatar billede mik28 Seniormester
20. februar 2003 - 13:59 #47
Der er tydeligtvis noget jeg ikke forstår
Avatar billede mik28 Seniormester
20. februar 2003 - 14:00 #48
Min nye router er rimmelig kool (hvem skulle have troet Teledanmark kunne gøre noget rigtigt)
Avatar billede mik28 Seniormester
20. februar 2003 - 14:01 #49
hov
Avatar billede mik28 Seniormester
20. februar 2003 - 14:02 #50
Avatar billede mik28 Seniormester
20. februar 2003 - 14:03 #51
Det er den folder jeg prøver at gemme i
Avatar billede mik28 Seniormester
20. februar 2003 - 14:08 #52
Jeg vil jo gerne have det hele relativt, for sitet skal jo ikke hedde mortallovetest når jeg er færdig
Avatar billede arne_v Ekspert
20. februar 2003 - 14:14 #53
Hov.

Er du sikker på at den sti er relativ i forhold din web app ?

Umiddelbart ville jeg tro at /music ville få den til at forsøge at
gemme i C:\music !
Avatar billede mik28 Seniormester
20. februar 2003 - 14:15 #54
okay. Jeg kan jo prøve at oprette det dir og se om det så virker
Avatar billede mik28 Seniormester
20. februar 2003 - 14:16 #55
No dice
Avatar billede arne_v Ekspert
20. februar 2003 - 14:26 #56
Har det brugernavn Tomcat kører under skrive-adgang til directories ?

Kan du evt. prøve med en absolut sti "C:/music" ?
Avatar billede mik28 Seniormester
20. februar 2003 - 14:28 #57
Hmmm, det ser ud til at virke
Avatar billede mik28 Seniormester
20. februar 2003 - 14:29 #58
Gider du lige prøve at uploade noget
Avatar billede mik28 Seniormester
20. februar 2003 - 14:29 #59
en fil på 1 mb eller noget i den retning
Avatar billede arne_v Ekspert
20. februar 2003 - 14:37 #60
Jeg prøvede med en lilel fil og en stor fil.

Ingen fejl ved den lille kun en "Upload udført. filnavn : null" besked.

Den store døde under upload.
Avatar billede mik28 Seniormester
20. februar 2003 - 14:38 #61
hmmm
Avatar billede mik28 Seniormester
20. februar 2003 - 14:38 #62
prøv igen
Avatar billede arne_v Ekspert
20. februar 2003 - 14:40 #63
Men jeg forsøgte også med en 8 MB.

For stor ?
Avatar billede mik28 Seniormester
20. februar 2003 - 14:41 #64
Næ, hvorfor skulle den være det
Avatar billede arne_v Ekspert
20. februar 2003 - 14:44 #65
Den gik død igen.
Avatar billede mik28 Seniormester
20. februar 2003 - 14:45 #66
Det virker fint lokalt
Avatar billede mik28 Seniormester
20. februar 2003 - 14:45 #67
Det kan jeg bare ikke bruge til noget
Avatar billede arne_v Ekspert
20. februar 2003 - 14:46 #68
En 200 KB fil gik derimod godt.

(dog stadig med Upload udført. filnavn : null)
Avatar billede arne_v Ekspert
20. februar 2003 - 14:47 #69
Nej. Max. størrelse er sat til 0x989680 = 10MB.
Avatar billede arne_v Ekspert
20. februar 2003 - 14:48 #70
Jeg vil ikke panikke over det.

Jeg er på arbejde og firmaets firewall kan godt drille lidt.

Jeg kan prøve senere idag, når jeg kommer hjem.
Avatar billede mik28 Seniormester
20. februar 2003 - 14:48 #71
Det er også okay
Avatar billede mik28 Seniormester
20. februar 2003 - 14:48 #72
Jeg ville sætte pris på det :-)
Avatar billede arne_v Ekspert
20. februar 2003 - 15:50 #73
Jeg har lige uploadet en 1 MB fil.

Ser den OK ud ?
Avatar billede mik28 Seniormester
20. februar 2003 - 19:28 #74
Det ser rigtigt ud :-)
Avatar billede mik28 Seniormester
20. februar 2003 - 19:31 #75
Er det muligt at få vist en statusbar mens filen uploader. Jeg skal også finde ud af hvordan jeg får navngivet filen så den ikke skriver filnavn null
Avatar billede arne_v Ekspert
20. februar 2003 - 19:38 #76
Hvad der vises mens man uploader må være browser specifikt.
Avatar billede mik28 Seniormester
20. februar 2003 - 19:39 #77
okay :-)
Avatar billede arne_v Ekspert
20. februar 2003 - 19:40 #78
Og det med navnet er lidt mystisk.

Fordi det burde være der, hvis filen er uploadet.

Der ligger en deploy.bat og en lomboz-et-eller-andet.zip som
kan læses ?
Avatar billede mik28 Seniormester
20. februar 2003 - 19:44 #79
Skulle jeg ikke kunne skrive således?

String dir = request.getParameter("dir");
            multi = new MultipartRequest(request, dir, 0x989680);
Avatar billede mik28 Seniormester
20. februar 2003 - 19:46 #80
Det her er ikke lovligt :-) Hvordan ecaper man en Ecape

out.println("<input type='hidden' name='dir' value='c:\music'>");
Avatar billede arne_v Ekspert
20. februar 2003 - 19:49 #81
String dir = request.getParameter("dir");
multi = new MultipartRequest(request, dir, 0x989680);

ser OK ud.
Avatar billede arne_v Ekspert
20. februar 2003 - 19:50 #82
out.println("<input type='hidden' name='dir' value='c:\\music'>");

[double backslashes]
Avatar billede mik28 Seniormester
20. februar 2003 - 19:52 #83
Det var også min første indskydelse
Avatar billede mik28 Seniormester
20. februar 2003 - 19:54 #84
Jeg prøver at skrive variablen ud med
out.println(dir);
men den er tom
Avatar billede arne_v Ekspert
20. februar 2003 - 19:54 #85
Virker det ikke ?
Avatar billede mik28 Seniormester
20. februar 2003 - 19:55 #86
Næ, samme fejl som før
Avatar billede arne_v Ekspert
20. februar 2003 - 19:59 #87
OK.

Double slash virker men request.getParameter("dir") returnerer null.
Avatar billede mik28 Seniormester
20. februar 2003 - 20:00 #88
Jeg tror det er det som sker. Den skriver i hvert tilfælde ikke noget ud
Avatar billede arne_v Ekspert
20. februar 2003 - 20:01 #89
Prøv med:
  multi.getParameter("dir")
og se om det virker !
Avatar billede mik28 Seniormester
20. februar 2003 - 20:02 #90
Der skete en fejl under upload.
java.lang.NullPointerException
Avatar billede arne_v Ekspert
20. februar 2003 - 20:04 #91
Hm.

Så er jeg lidt kørt fast.

Kan du evt. poste din srevlet som den ser ud nu  -
med request.getParameter("dir") ?
Avatar billede mik28 Seniormester
20. februar 2003 - 20:05 #92
Selvfølgelig

import com.oreilly.servlet.MultipartRequest;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.*;
import javax.servlet.http.*;

public class Uploadservlet extends HttpServlet
{

    public Uploadservlet()
    {
    }

    public void init(ServletConfig config)
        throws ServletException
    {
        super.init(config);
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException
    {
        response.setContentType("text/html");
        PrintWriter out = new PrintWriter(response.getOutputStream());
        out.println("<html>");
        out.println("<head><title>Uploadservlet</title></head>");
        out.println("<body>Get metoden underst&oslash;ttes ikke af servletten.");
        out.println("</body></html>");
        out.close();
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException
    {
        int result = 0;
        String fejltekst = null;
        response.setContentType("text/html");
        PrintWriter out = new PrintWriter(response.getOutputStream());
       
        String dir = request.getParameter("dir");
        out.println("<html>");
        out.println("<head><title>Fil-upload</title></head>");
        out.println("<body>");
        out.println("<H1>Upload af fil</H1><br><hr><br>");
        MultipartRequest multi = null;
        try
        {
           
           
            multi = new MultipartRequest(request, dir, 0x989680);
            String dir = request.getParameter("dir");
            out.println(dir);
            out.println("Upload udf&oslash;rt.");
            out.println("filnavn : " + multi.getFilesystemName("uploadfile") + "<br>");
        }
        catch(Exception e)
        {
            out.println("Der skete en fejl under upload.<br>\n" + e.toString());
        }
        out.println("</body></html>");
        out.flush();
        out.close();
    }

    public String getServletInfo()
    {
        return "Uploadservlet Information";
    }
}
Avatar billede mik28 Seniormester
20. februar 2003 - 20:06 #93
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class Upload extends HttpServlet
{
       
        public void doGet (HttpServletRequest request,
                      HttpServletResponse response)
        throws ServletException, IOException
        {
        PrintWriter        out;
     
        response.setContentType("text/html");

        out = response.getWriter();
       
       
            out.println("<html><head><title>Upload</title>");
            out.println("</head>");
           
            out.println("<body bgcolor='#ffffff'>");
            out.println("<form action='Uploadservlet' method='post' name='fil' onsubmit=\"if(this.file.value='') return false\" enctype=\"multipart/form-data\" target='_self'>");
            out.println("V&aelig;lg en lokal fil: <input type='file' name='file'>");
            out.println("<input type='hidden' name='dir' value='c:\\music'>");
            out.println("Afsend: <input type='submit' value='Afsend fil'>");
            out.println("</form>");

            out.println("</body>");
            out.println("</html>");
            out.close();
            }       
       
}
Avatar billede mik28 Seniormester
20. februar 2003 - 20:11 #94
Hov der gik det lige lidt for hurtigt.

import com.oreilly.servlet.MultipartRequest;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.*;
import javax.servlet.http.*;

public class Uploadservlet extends HttpServlet
{

    public Uploadservlet()
    {
    }

    public void init(ServletConfig config)
        throws ServletException
    {
        super.init(config);
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException
    {
        response.setContentType("text/html");
        PrintWriter out = new PrintWriter(response.getOutputStream());
        out.println("<html>");
        out.println("<head><title>Uploadservlet</title></head>");
        out.println("<body>Get metoden underst&oslash;ttes ikke af servletten.");
        out.println("</body></html>");
        out.close();
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException
    {
        int result = 0;
        String fejltekst = null;
        response.setContentType("text/html");
        PrintWriter out = new PrintWriter(response.getOutputStream());
       
        out.println("<html>");
        out.println("<head><title>Fil-upload</title></head>");
        out.println("<body>");
        out.println("<H1>Upload af fil</H1><br><hr><br>");
        MultipartRequest multi = null;
        try
        {
           
            String dir = request.getParameter("dir");
            multi = new MultipartRequest(request, dir, 0x989680);
             
            out.println(dir);
            out.println("Upload udf&oslash;rt.");
            out.println("filnavn : " + multi.getFilesystemName("uploadfile") + "<br>");
        }
        catch(Exception e)
        {
            out.println("Der skete en fejl under upload.<br>\n" + e.toString());
        }
        out.println("</body></html>");
        out.flush();
        out.close();
    }

    public String getServletInfo()
    {
        return "Uploadservlet Information";
    }
}
Avatar billede arne_v Ekspert
20. februar 2003 - 20:11 #95
Could you try move the out.println up before the
  new MultipartRequest
?
Avatar billede mik28 Seniormester
20. februar 2003 - 20:13 #96
Det var bare en dum fejl
Avatar billede mik28 Seniormester
20. februar 2003 - 20:15 #97
Den smider en exception fordi dir ikke har nogen værdi. Det jeg ikke forstår er hvor har dir ikke nogen værdi?
Avatar billede arne_v Ekspert
20. februar 2003 - 20:16 #98
dir er altså også null lige før
  new MultipartRequest
?

Ja - jeg forstå det ikke.
Avatar billede mik28 Seniormester
20. februar 2003 - 20:17 #99
er der noget galt med min html?
Avatar billede mik28 Seniormester
20. februar 2003 - 20:19 #100
ja den er null
Avatar billede mik28 Seniormester
20. februar 2003 - 20:27 #101
Avatar billede arne_v Ekspert
20. februar 2003 - 20:31 #102
Din HTML ser fin ud.

Jeg forstå ikkehvorfor dir ikke får en værdi.
Avatar billede mik28 Seniormester
20. februar 2003 - 20:32 #103
Heller ikke mig
Avatar billede arne_v Ekspert
20. februar 2003 - 20:32 #104
Du kan selvfølgelig altid gå tilbage til en fast værdi, men det var
rart at have lidt valgmuligheder.
Avatar billede mik28 Seniormester
20. februar 2003 - 20:33 #105
Det ville være det fede
Avatar billede arne_v Ekspert
20. februar 2003 - 20:34 #106
Noget helt andet. Hvis dir er i HTML formen, så bør du check
input for om det er et validt sted.

Bare sådan ondsindede personer ikke sender krnl386.exe
til dir=C:\WINNT\system32 !
Avatar billede mik28 Seniormester
20. februar 2003 - 20:37 #107
Jeg tror på det gode i mennesker
Avatar billede mik28 Seniormester
20. februar 2003 - 20:41 #108
Men du har selvfølgelig ret
Avatar billede arne_v Ekspert
20. februar 2003 - 20:43 #109
Mystisk.

Kunne du prøve at lave en:

out.println(request.getParameterMap());

?

Den skal vises alt hvad der er i request !
Avatar billede arne_v Ekspert
20. februar 2003 - 20:45 #110
Jeg har en web-server kørende på ADSL med fast IP.

3/4 af de hits jeg får er på:

/c/winnt/system32/cmd.exe?/c+dir
/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir

etc.etc.

[jeg kører ikke Windows på det system, så jeg er ikke bekymret]
Avatar billede mik28 Seniormester
20. februar 2003 - 20:48 #111
Det er altså lidt for mærkeligt at jeg ikke kan modtage en simple variable
Avatar billede mik28 Seniormester
20. februar 2003 - 21:14 #112
Hvilken router bruger du?
Avatar billede arne_v Ekspert
20. februar 2003 - 21:21 #113
cisco 806
Avatar billede arne_v Ekspert
20. februar 2003 - 21:21 #114
Hvorfor det ?
Avatar billede arne_v Ekspert
20. februar 2003 - 21:21 #115
Har du prøvet at skrive hel parameter mappen ud ?
Avatar billede mik28 Seniormester
20. februar 2003 - 21:25 #116
Den skriver ike noget ud
Avatar billede mik28 Seniormester
20. februar 2003 - 21:47 #117
Du er her ikke mere kan jeg regne ud.
Avatar billede arne_v Ekspert
20. februar 2003 - 21:53 #118
Jo - jeg holdt bare lige pause.

out.println(request.getParameterMap());

skriver slet ikke noget ud ??

Jeg bliver mere og mere mystificeret !

Der foregår et eller andet mystisk her.

Du udskriver inden new MultipartRequest ?  (det burde ikke betyde noget,
men jeg ved jo ike om den laver noget specielt)
Avatar billede mik28 Seniormester
20. februar 2003 - 22:17 #119
pointene er klart dine
Avatar billede mik28 Seniormester
20. februar 2003 - 22:18 #120
Mit ICQ er 2954333399
Avatar billede arne_v Ekspert
20. februar 2003 - 22:21 #121
Jeg har ikke ICQ.

Jeg er nok for gammel til det.

:-)
Avatar billede arne_v Ekspert
20. februar 2003 - 22:46 #122
Men jeg tror jeg vil prøve selv at lege lidt med den upload servlet
i weekenden.
Avatar billede mik28 Seniormester
21. februar 2003 - 09:20 #123
Det ville være fedt at få det til at virke ordenligt
Avatar billede mik28 Seniormester
23. februar 2003 - 11:34 #124
Hej Arne_v

Jeg har fundet ud af hvorfor det ikke virker. Jeg ved bare ikke hvordan jeg løser det. I den form jeg bruger til at vælge en fil til at uploade har jeg enctype="multipart/form-data". Når man har det kan man ikke bruge getParameter() i servletten.
Avatar billede arne_v Ekspert
23. februar 2003 - 11:53 #125
Jeg har en ide.

I en hel anden tråd fortalte Erik Jacobsen om et lille trick.

Jeg synes stadigvæk ikke at det er kønt, men måske kan det løse
dit problem.

Prøv og erstat:

<form action='Uploadservlet' method='post' name='fil' ... enctype="multipart/form-data" ...>
...<input type='file' name='file'>
<input type='text' name='dir' value='test'>
</form>

med:

<form action='Uploadservlet?dir=test' method='post' name='fil' ... enctype="multipart/form-data" ...>
...<input type='file' name='file'>
</form>

og se om du kan få fat i request.getParameter("dir") på den måde !
Avatar billede mik28 Seniormester
23. februar 2003 - 12:15 #126
Det virker men hvordan får jeg så lavet en dropboks hvor man kan vælge flere forskellige dir's. Du har i øvrigt ret i at det ikke er kønt. Jeg bryder mig personligt ikke om at der står variable i URL'en
Avatar billede arne_v Ekspert
23. februar 2003 - 12:21 #127
Det er jo en af fordelene ved form input at man kan vælge
mellem forskellige typer af input.

Jeg kan ikke lige se hvordan man fixe action URL i en enkelt side.

Du kan dermod lave:

en HTML/JSP/servlet som giver valgmulighed for dir og kalder en ny JSP/servlet
som generere en form med action  ?dir=det-man-valgte

Men det er lidt mere bøvlet !
Avatar billede mik28 Seniormester
23. februar 2003 - 12:32 #128
okay. Jeg tror altså bare jeg definerer dir i servletten :-) Filnavn er stadig null
Avatar billede mik28 Seniormester
23. februar 2003 - 12:35 #129
Avatar billede arne_v Ekspert
23. februar 2003 - 12:40 #130
Der er så multi.getFilesystemName("uploadfile") der returnerer null.

gad vide om det skal være multi.getFilesystemName("file") !?
Avatar billede mik28 Seniormester
23. februar 2003 - 12:42 #131
Det tror jeg du har ret i <input type='file' name='file'>"); Jeg prøver lige
Avatar billede mik28 Seniormester
23. februar 2003 - 12:45 #132
Jepper det virker
Avatar billede arne_v Ekspert
23. februar 2003 - 12:49 #133
Herligt !
Avatar billede mik28 Seniormester
23. februar 2003 - 12:49 #134
Ja det er fedt
Avatar billede mik28 Seniormester
23. februar 2003 - 13:23 #135
Tak for hjælpen. Det er massere jeg gerne vil lave i denne her forbindelse, men jeg prøver lige selv. Tak igen jeg sætter stor pris på det :-)
Avatar billede mik28 Seniormester
23. februar 2003 - 17:18 #136
Der er ingen problemer med at hente variabler når man først kan kører getParameter på multi objektet :-)

multi = new MultipartRequest(request, "c:/music" , 0x989680);
String navn = multi.getParameter("navn");

Så må jeg jo bare leve med at jeg kun kan gemme i et direktorat.
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