Domanda

Ho un meccanismo molto semplice upload di file in java. Mi basta prendere il file e salvarlo sul server. Sto testando questo semplice codice con selenio e quando si verifica un timeout nel Tomcat prova di selenio crea file di 0 byte sotto TOMCAT_HOME lavoro / Catalina / localhost / uploadServlet / directory / come multipart file *. Si crea migliaia di file, fino a quando non v'è lo spazio su disco esaurito sul dispositivo. Che cosa può causare questo problema? Come posso risolvere questo? C'è qualcuno ha un'idea su questo?

Il mio ambiente è: Ubuntu - 8.04 Server, Apache Tomcat - 5.5.29, Sun Java 1.6

Grazie,

Ecco il frammento di codice che uso

    String strFileName = request.getParameter("FileName");
    String strPath = request.getParameter("Path");
    File fFile = (File) request.getAttribute("Content");

    int index = strPath.length() - 1; 
    if (strPath.charAt(index) != '/') {
        strPath += "/";
    }
    if (! new File(strPath).exists()) {
        new File(strPath).mkdirs();
    }
    File file = new File(strPath + strFileName);
    FileOutputStream fileOutputStream = new FileOutputStream(file);
    FileInputStream 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);

    fileOutputStream.close();
    fileInputStream.close();

    if (fFile.exists()) {
        fFile.delete();
    }
È stato utile?

Soluzione

apache file di Commons classe di upload e Ho cancellato i file temporanei nella infine sezione. Il problema viene risolto con questa implementazione.

Altri suggerimenti

E 'possibile che una sorta di eccezione si sta verificando nel bel mezzo di questo codice? Meglio chiudere i flussi in un blocco finally.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top