01: // Copyright (c) 2003-2007, Jodd Team (jodd.sf.net). All Rights Reserved.
02:
03: package jodd.servlet.upload.impl;
04:
05: import jodd.io.FastByteArrayOutputStream;
06: import jodd.servlet.upload.FileUpload;
07: import jodd.servlet.upload.MultipartRequestInputStream;
08: import jodd.servlet.upload.FileUploadFactory;
09:
10: import java.io.IOException;
11:
12: /**
13: * {@link FileUpload} that stores uploaded files in memory byte array.
14: */
15: public class MemoryFileUpload extends FileUpload {
16:
17: public MemoryFileUpload(MultipartRequestInputStream input) {
18: super (input);
19: }
20:
21: // ---------------------------------------------------------------- logic
22:
23: protected byte[] data;
24:
25: /**
26: * Returns byte array containing uploaded file data.
27: */
28: public byte[] getFileData() {
29: return data;
30: }
31:
32: /**
33: * Reads data from input stream into byte array and stores file size.
34: */
35: @Override
36: public void processStream() throws IOException {
37: FastByteArrayOutputStream fbos = new FastByteArrayOutputStream();
38: input.copyAll(fbos);
39: data = fbos.toByteArray();
40: this .size = data.length;
41: }
42:
43: // ---------------------------------------------------------------- factory
44:
45: public static class Factory implements FileUploadFactory {
46:
47: public FileUpload create(MultipartRequestInputStream input) {
48: return new MemoryFileUpload(input);
49: }
50: }
51: }
|