394839 Allow multipart mime with no boundary
This commit is contained in:
parent
207745fdef
commit
4cf77cea31
|
@ -467,7 +467,11 @@ public class MultiPartInputStream
|
||||||
if (!_tmpDir.exists())
|
if (!_tmpDir.exists())
|
||||||
_tmpDir.mkdirs();
|
_tmpDir.mkdirs();
|
||||||
|
|
||||||
String boundary="--"+QuotedStringTokenizer.unquote(value(_contentType.substring(_contentType.indexOf("boundary=")), true).trim());
|
String contentTypeBoundary = "";
|
||||||
|
if (_contentType.indexOf("boundary=") >= 0)
|
||||||
|
contentTypeBoundary = QuotedStringTokenizer.unquote(value(_contentType.substring(_contentType.indexOf("boundary=")), true).trim());
|
||||||
|
|
||||||
|
String boundary="--"+contentTypeBoundary;
|
||||||
byte[] byteBoundary=(boundary+"--").getBytes(StringUtil.__ISO_8859_1);
|
byte[] byteBoundary=(boundary+"--").getBytes(StringUtil.__ISO_8859_1);
|
||||||
|
|
||||||
// Get first boundary
|
// Get first boundary
|
||||||
|
|
|
@ -30,6 +30,8 @@ import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.StringReader;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
import javax.servlet.MultipartConfigElement;
|
import javax.servlet.MultipartConfigElement;
|
||||||
|
@ -85,6 +87,66 @@ public class MultiPartInputStreamTest extends TestCase
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void testNoBoundaryRequest()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
String str = "--\r\n"+
|
||||||
|
"Content-Disposition: form-data; name=\"fileName\"\r\n"+
|
||||||
|
"Content-Type: text/plain; charset=US-ASCII\r\n"+
|
||||||
|
"Content-Transfer-Encoding: 8bit\r\n"+
|
||||||
|
"\r\n"+
|
||||||
|
"abc\r\n"+
|
||||||
|
"--\r\n"+
|
||||||
|
"Content-Disposition: form-data; name=\"desc\"\r\n"+
|
||||||
|
"Content-Type: text/plain; charset=US-ASCII\r\n"+
|
||||||
|
"Content-Transfer-Encoding: 8bit\r\n"+
|
||||||
|
"\r\n"+
|
||||||
|
"123\r\n"+
|
||||||
|
"--\r\n"+
|
||||||
|
"Content-Disposition: form-data; name=\"title\"\r\n"+
|
||||||
|
"Content-Type: text/plain; charset=US-ASCII\r\n"+
|
||||||
|
"Content-Transfer-Encoding: 8bit\r\n"+
|
||||||
|
"\r\n"+
|
||||||
|
"ttt\r\n"+
|
||||||
|
"--\r\n"+
|
||||||
|
"Content-Disposition: form-data; name=\"datafile5239138112980980385.txt\"; filename=\"datafile5239138112980980385.txt\"\r\n"+
|
||||||
|
"Content-Type: application/octet-stream; charset=ISO-8859-1\r\n"+
|
||||||
|
"Content-Transfer-Encoding: binary\r\n"+
|
||||||
|
"\r\n"+
|
||||||
|
"000\r\n"+
|
||||||
|
"----\r\n";
|
||||||
|
|
||||||
|
MultipartConfigElement config = new MultipartConfigElement(_dirname, 1024, 3072, 50);
|
||||||
|
MultiPartInputStream mpis = new MultiPartInputStream(new ByteArrayInputStream(str.getBytes()),
|
||||||
|
"multipart/form-data",
|
||||||
|
config,
|
||||||
|
_tmpDir);
|
||||||
|
mpis.setDeleteOnExit(true);
|
||||||
|
Collection<Part> parts = mpis.getParts();
|
||||||
|
assertThat(parts.size(), is(4));
|
||||||
|
|
||||||
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
|
Part fileName = mpis.getPart("fileName");
|
||||||
|
assertThat(fileName, notNullValue());
|
||||||
|
assertThat(fileName.getSize(), is(3L));
|
||||||
|
IO.copy(fileName.getInputStream(), baos);
|
||||||
|
assertThat(baos.toString("US-ASCII"), is("abc"));
|
||||||
|
|
||||||
|
baos = new ByteArrayOutputStream();
|
||||||
|
Part desc = mpis.getPart("desc");
|
||||||
|
assertThat(desc, notNullValue());
|
||||||
|
assertThat(desc.getSize(), is(3L));
|
||||||
|
IO.copy(desc.getInputStream(), baos);
|
||||||
|
assertThat(baos.toString("US-ASCII"), is("123"));
|
||||||
|
|
||||||
|
baos = new ByteArrayOutputStream();
|
||||||
|
Part title = mpis.getPart("title");
|
||||||
|
assertThat(title, notNullValue());
|
||||||
|
assertThat(title.getSize(), is(3L));
|
||||||
|
IO.copy(title.getInputStream(), baos);
|
||||||
|
assertThat(baos.toString("US-ASCII"), is("ttt"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void testNonMultiPartRequest()
|
public void testNonMultiPartRequest()
|
||||||
|
|
Loading…
Reference in New Issue