M. Manna created STR-3224:
-----------------------------
Summary: DiskFile getInputStream() implementation returns
ByteInputStream or FileInputStream
Key: STR-3224
URL: https://issues.apache.org/jira/browse/STR-3224
Project: Struts 1
Issue Type: Bug
Affects Versions: 1.2.9
Environment: Windows OS
Reporter: M. Manna
Priority: Critical
i have posted the question original on SO. Here is the link:
[https://stackoverflow.com/questions/47347194/struts-diskfile-getinputstream-returns-bytearrayinputstream-and-filearrayinput?noredirect=1#comment81646937_47347194]
The summary is that this "Switchover" behaviour should be documented somewhere
if it returns ByteArrayInputStream or FileInputStream based on file size.
The files for my case was class files (byte code files). and my code is given
below
/**
* Get Uploaded file from Struts Multipart form upload
* org.apache.struts.upload.FormFile
*/
FormFile file = form.getTheFile();
/*
* Since we never had any issue, we didn't explicitly check using
* instanceof, but even then it's confusing. We do know that
* ByteArrayInputStream has mark supported. And it works upto
* 256KB file size on Windows OS.
*/
InputStream markStream = file.getInputStream(); // Doc says it sends
"FileInputStream"
try {
// Do something with the markStream object
markStream.reset(); // for ByteArrayInputStream mark is supported
// Do something else with markStream
} Catch (IOException ioe) {
ioe.printStackTrace();
} finally {
markStream.close(); // no effect for certain types
}
Our issue is that this behaviour, even if expected, should be well documented.
If we have missed this somewhere in Oracle JDK docs or in ASF docs, please
could you point us there?
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)