Ignore:
Timestamp:
2012-01-24T10:10:05+13:00 (12 years ago)
Author:
sjm84
Message:

Some fixes to file uploading

File:
1 edited

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");
Note: See TracChangeset for help on using the changeset viewer.