Changeset 24962

Show
Ignore:
Timestamp:
24.01.2012 10:10:05 (7 years ago)
Author:
sjm84
Message:

Some fixes to file uploading

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/LibraryServlet.java

    r24753 r24962  
    357357 
    358358        String query_string; 
    359         if(request.getMethod().equals("GET")) 
    360         { 
    361             query_string = request.getQueryString();     
    362         } 
    363         else if(request.getMethod().equals("POST")) 
     359        if (request.getMethod().equals("GET")) 
     360        { 
     361            query_string = request.getQueryString(); 
     362        } 
     363        else if (request.getMethod().equals("POST")) 
    364364        { 
    365365            query_string = ""; 
    366366            Map paramMap = request.getParameterMap(); 
    367367            Iterator keyIter = paramMap.keySet().iterator(); 
    368              
    369             while(keyIter.hasNext()) 
    370             { 
    371                 String current = (String)keyIter.next(); 
    372                 query_string += current + "=" + ((String[])paramMap.get(current))[0]; 
    373                 if(keyIter.hasNext()) 
     368 
     369            while (keyIter.hasNext()) 
     370            { 
     371                String current = (String) keyIter.next(); 
     372                query_string += current + "=" + ((String[]) paramMap.get(current))[0]; 
     373                if (keyIter.hasNext()) 
    374374                { 
    375375                    query_string += "&"; 
    376376                } 
    377377            } 
    378              
     378 
    379379            DiskFileItemFactory fileItemFactory = new DiskFileItemFactory(); 
    380380 
     
    386386            ServletFileUpload uploadHandler = new ServletFileUpload(fileItemFactory); 
    387387 
     388            String storageLocation = ""; 
     389            File uploadedFile = null; 
    388390            try 
    389391            { 
    390392                List items = uploadHandler.parseRequest(request); 
    391393                Iterator iter = items.iterator(); 
    392                 while(iter.hasNext()) 
     394                while (iter.hasNext()) 
    393395                { 
    394396                    FileItem current = (FileItem) iter.next(); 
    395                     if(current.isFormField()) 
     397                    if (current.isFormField()) 
    396398                    { 
    397399                        query_string += current.getFieldName() + "=" + current.getString(); 
    398                         if(iter.hasNext()) 
     400                        if (iter.hasNext()) 
    399401                        { 
    400402                            query_string += "&"; 
    401403                        } 
     404                         
     405                        if(current.getFieldName().equals(GSParams.FILE_LOCATION)) 
     406                        { 
     407                            storageLocation = current.getString(); 
     408                        } 
    402409                    } 
    403410                    else 
    404411                    { 
    405412                        File file = new File(GlobalProperties.getGSDL3Home() + File.separator + "tmp" + File.separator + current.getName()); 
     413                        File tmpFolder = new File(GlobalProperties.getGSDL3Home() + File.separator + "tmp"); 
     414                        if(!tmpFolder.exists()) 
     415                        { 
     416                            tmpFolder.mkdirs(); 
     417                        } 
    406418                        current.write(file); 
    407                     } 
    408                 } 
    409             } 
    410             catch (Exception e)  
     419                         
     420                        uploadedFile = file; 
     421                    } 
     422                } 
     423                 
     424                if(!storageLocation.equals("") && uploadedFile != null) 
     425                { 
     426                    File toFile = new File(GlobalProperties.getGSDL3Home() + storageLocation); 
     427                    if(toFile.exists()) 
     428                    { 
     429                        logger.error("Cannot move the stored file because the file \"" + storageLocation + "\" already exists"); 
     430                    } 
     431                    else 
     432                    { 
     433                        logger.info("Moving uploaded file (" + uploadedFile.getAbsolutePath() + ") to " + toFile.getAbsolutePath()); 
     434                        uploadedFile.renameTo(toFile); 
     435                    } 
     436                } 
     437            } 
     438            catch (Exception e) 
    411439            { 
    412440                logger.error("Exception in LibraryServlet -> " + e.getMessage()); 
    413441            } 
    414              
    415             if(query_string.equals("")) 
     442 
     443            if (query_string.equals("")) 
    416444            { 
    417445                query_string = null; 
     
    422450            query_string = null; 
    423451        } 
    424          
     452 
    425453        if (query_string != null) 
    426454        { 
     
    473501            session.setAttribute(GSXML.USER_ID_ATT, uid); 
    474502        } 
     503 
    475504        request.setCharacterEncoding("UTF-8"); 
    476505        response.setContentType("text/html;charset=UTF-8");