Upload mit Tomcat wohin

Jayjayxh

Grünschnabel
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:
	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:
  File file = new File("\\uploaded\\",id+fileType);
über
Code:
File file = new File("http:\\localhost:8400\\uploaded\\",id + fileType);
bis hin zu
Code:
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!
 
Hallo jayjayxh,

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

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

Gruß
Torben
 
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?
 
Mittels getServletContext().getRealPath(String dir) bekommst Du den absoluten Pfad eines Verzeichnises innerhalb des Webapp-Ordners - das sollte Dir helfen.
 
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
 

Neue Beiträge

Zurück