java - How can I stop FileUploadBase to create upload_temp_file on JBoss 7 -


it's first question stackoverflow :)

so, have java web application i'm using jboss 7.1 run app. in app have servlet upload 1 file application , i'm using lib: org.apache.commons.fileupload.fileuploadbase.

when call method fileuploadbase.parserequest, file called upload_d77dbeb6_aa80_4d64_a112_2ea7c12c6ced_00000089.tmp created in c:\users\[server-machine]\appdata\local\temp , size same original file uploaded application.

the file name generated fileuploadbase , increase plus five, like:

  1. upload_d77...ced_00000089.tmp

  2. upload_d77...ced_00000094.tmp

  3. upload_d77...ced_00000099.tmp

bellow follow code of parserequest method, file created when while loop finished.

public list<fileitem> parserequest(requestcontext ctx)         throws fileuploadexception {     list<fileitem> items = new arraylist<fileitem>();     boolean successful = false;     try {         fileitemiterator iter = getitemiterator(ctx);         fileitemfactory fac = getfileitemfactory();         if (fac == null) {             throw new nullpointerexception("no fileitemfactory has been set.");         }         while (iter.hasnext()) {             final fileitemstream item = iter.next();             // don't use getname() here prevent invalidfilenameexception.             final string filename = ((fileitemiteratorimpl.fileitemstreamimpl) item).name;             fileitem fileitem = fac.createitem(item.getfieldname(), item.getcontenttype(),                                                item.isformfield(), filename);             items.add(fileitem);             try {                 streams.copy(item.openstream(), fileitem.getoutputstream(), true);             } catch (fileuploadioexception e) {                 throw (fileuploadexception) e.getcause();             } catch (ioexception e) {                 throw new iofileuploadexception(format("processing of %s request failed. %s",                                                        multipart_form_data, e.getmessage()), e);             }             final fileitemheaders fih = item.getheaders();             fileitem.setheaders(fih);         }         successful = true;         return items;     } catch (fileuploadioexception e) {         throw (fileuploadexception) e.getcause();     } catch (ioexception e) {         throw new fileuploadexception(e.getmessage(), e);     } {         if (!successful) {             (fileitem fileitem : items) {                 try {                     fileitem.delete();                 } catch (throwable e) {                     // ignore                 }             }         }     } } 

when debuged temp_file created when debug stopped on successful = true;

is there way @ jboss disable file creation orsome parameter set up?

bellow follow code invoke parserequest

try {             list<string> files = new arraylist<>();              fileitemfactory factory = new diskfileitemfactory();             servletfileupload upload = new servletfileupload(factory);              upload.setprogresslistener(listener);              list<fileitem> items = upload.parserequest(request);             iterator<fileitem> iter = items.iterator(); 

i tried use defaultitemfactory class deprecated used diskfileitemfactory instead.

diskfileitemfactory clean temp files using gabage collector java.io

file cleaning tracker: keeps track of files awaiting deletion, , deletes them when associated marker object reclaimed garbage collector.

even so, had job delete old file, because file cleaning tracker delete temp file tracked, old temp file wasn't tracked it'd never been delete gc.

thanks alex, figured out because answer. :)


Comments