Hi all,

I have a very simple file upload mechanism in java. I just take the file and
save it on the server. I'm testing this simple code with selenium and *when
a timeout occurs in the selenium test *tomcat creates 0 byte files under
tomcat_home/work/Catalina/localhost/uploadServlet/ directory as MultiPart*
files. It creates thousands of files, until there is no disk space left on
device. What may cause this problem? How can I solve this? Is there anyone
has an idea about this?

My environment is: Ubuntu - 8.04 server, apache tomcat - 5.5.29, sun java
1.6

Thanks,

Here is the code snippet that i use

        File fFile = null;
        FileOutputStream fileOutputStream = null;
        FileInputStream fileInputStream = null;
        try {

            String strFileName = request.getParameter("FileName");
            String strPath = request.getParameter("Path");
            //String strMediaType = request.getParameter("MediaType");

            //String strDescription = request.getParameter("Description");
            fFile = (File) request.getAttribute("Content");

            int index = strPath.length() - 1; //If the user forgets to
put the last / for the path... We put it for him/her

            if (strPath.charAt(index) != '/') {
                strPath += "/";
            }
            if (!new File(strPath).exists()) {
                new File(strPath).mkdirs();
            }

            File file = new File(strPath + strFileName);
            fileOutputStream = new FileOutputStream(file);
            fileInputStream = new FileInputStream(fFile);

            byte[] bBuf = new byte[1024];

            int iBufLen = 0;
            int iReadLen = 1024;
            int iTotelLen = 0;
            /*read 1024 bytes at a time*/
            while ((iBufLen = fileInputStream.read(bBuf)) != -1) {

                fileOutputStream.write(bBuf);
                fileOutputStream.flush();
                iTotelLen += iBufLen;
                if (fileInputStream.available() < iReadLen) {
                    iReadLen = fileInputStream.available();

                    break;
                }
            }

            byte[] tempbBuf = new byte[iReadLen];
            fileInputStream.read(tempbBuf, 0, iReadLen);

            fileOutputStream.write(tempbBuf);


        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            fileOutputStream.close();
            fileInputStream.close();

            if (fFile.exists()) {

                fFile.delete();
            }
        }



-- 
Murat BIRBEN

Reply via email to