tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
575
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Jayjayxh Jayjayxh ist offline Rookie
    Registriert seit
    Sep 2007
    Beiträge
    5
    Hallo,
    ich habe ein Servlet geschrieben welches den Fileupload von Videos bewerkstelligen soll. Nach großem Probieren funktioniert es jetzt auch, jedoch nur wenn ich direkt ins bin-Verzeichnis des Tomcat uploade.

    So sieht es momentan aus:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    
        public void doPost(HttpServletRequest req,
                            HttpServletResponse res)
                            throws IOException, ServletException {
            
              res.setContentType( "text/html" );
              PrintWriter pw = res.getWriter();
     
     
              HttpSession session = req.getSession();
              String id = session.getId();
            
             DiskFileItemFactory factory = new DiskFileItemFactory();
              ServletFileUpload upload = new ServletFileUpload(factory);
              if (upload.isMultipartContent(req)){
                   try {
                       
                       List files = upload.parseRequest(req);
     
                       byte[] buffer = new byte[8192];
                       for (Iterator iter = files.iterator(); iter.hasNext();) {
                            FileItem element = (FileItem) iter.next();
                            if (!element.isFormField()) {   
                                
                                String fileType = element.getName();
                                fileType = fileType.substring(fileType.lastIndexOf('.'));
                                          
                                File file = new File(id+fileType);
                                video = new String( file.getAbsolutePath());
                              
                                InputStream is = element.getInputStream();
                                FileOutputStream fos = new FileOutputStream(file);
                                int len = 0;
                                while ((len = is.read(buffer)) > 0) {
                                    fos.write(buffer, 0, len);
                                }
                                fos.flush();
                                fos.close();
                                is.close();

    Sobald ich allerdings einen Pfad hinzufügen will bekomme ich einen IO Fehler.
    Ich habe alle möglichen Versionen ausprobiert zB

    von
    Code :
    1
    
      File file = new File("\\uploaded\\",id+fileType);
    über
    Code :
    1
    
    File file = new File("http:\\localhost:8400\\uploaded\\",id + fileType);
    bis hin zu
    Code :
    1
    
    File file = new File("http:\\{IP}:8400\\uploaded\\",id + fileType);

    Wie genau muss es denn nun lauten damit er in ein anderes Verzeichnis als das bin schreibt?

    Danke euch!
     

  2. #2
    Crod Crod ist offline Mitglied
    Registriert seit
    May 2008
    Beiträge
    24
    Hallo jayjayxh,

    du musst für den Upload in ein bestimmtes Verzeichnis einen absoluten Pfad übergeben.
    Also z.B.

    Code :
    1
    
    File file = new File("D:/projekte/projekt/upload",id + fileType);

    Gruß
    Torben
     

  3. #3
    Jayjayxh Jayjayxh ist offline Rookie
    Registriert seit
    Sep 2007
    Beiträge
    5
    Vielen Dank für die Anwort. Aber ich glaube ich habe keine Berechtigung auf D: oder C: zu speichern. Soll ich dann etwa den absuluten Pfad zu meinem BlazeDS bzw Tomcat Ordner angeben? Wäre dann etwas wie C://Dokumente und Einstellungen/root/desktop/blazeds/tomcat/
    Gibt es keine möglichkeit auf localhost : port zu speichern? Denn den absoluten Pfad kenne ich doch "eigentlich" gar nicht wenn der server nicht bei mir steht. oder?
     

  4. #4
    Avatar von matdacat
    matdacat matdacat ist offline Mitglied Platin
    Registriert seit
    Aug 2004
    Beiträge
    672
    Mittels getServletContext().getRealPath(String dir) bekommst Du den absoluten Pfad eines Verzeichnises innerhalb des Webapp-Ordners - das sollte Dir helfen.
     

  5. #5
    Crod Crod ist offline Mitglied
    Registriert seit
    May 2008
    Beiträge
    24
    Ja, genau wie metdacat sagte.
    Ich arbeite in einem solchen Fall auch mit getServletContext().getRealPath(String dir).

    Man muss sehen ob das für deinen Fall sinnvoll ist.
    Ich habe z.B. mit WAR Files gearbeitet und da unser Server einmal am Tag rebootet und die WAR Files danach neu entpacke ist ein Upload in das Webbapp Verzeichnis, zumindest für Dateien die dauerhaft auf dem Server liegen sollen, nicht sehr sinnvoll.

    Ich habe in einem solchen Fall mit Variablen im Tomcat definiert, die auf mein Projekte Verzeichnis verweist, in dem sich dann das webapps Verzeichnis befindet.

    Gruß
    Torben
     

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 15.10.09, 08:54
  2. Wohin mit den Sql Befehlen
    Von Reverent im Forum .NET Datenverwaltung
    Antworten: 8
    Letzter Beitrag: 21.08.08, 21:25
  3. Wohin mit dem move_uploaded_file?
    Von Smartsoul im Forum PHP
    Antworten: 9
    Letzter Beitrag: 15.11.05, 22:31
  4. Wohin mit der Datenbank?
    Von Dario Linsky im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 05.10.04, 08:36