// Clean up the information stashed in the httpSession if necessary.
if (hasBinding(BindingNames.maxLength)) {
session().httpSession().removeAttribute(fileUploadName);
}
AWFileData fileData = requestContext.request().fileDataForKey(fileUploadName);
if (fileData == null && inPlaybackMode()) {
fileData = fileDataFromInputUrl();
}
if (fileData != null && (fileData.bytesRead() > 0 || booleanValueForBinding("newMode"))) {
String filename = fileData.filename();
setValueForBinding(filename, BindingNames.filename);
setValueForBinding(fileData.mimeType(), BindingNames.mimeType);
setValueForBinding(fileData.fileIncomplete(), BindingNames.fileSizeExceeded);
// Only one binding for file data is honored. Precedence order: file, input stream, byte array.
if (parent().hasBinding(BindingNames.file)) {
File file = fileData.file();
if ((file == null) && (fileData.data() != null)) {
throw new AWGenericException("File binding not supported for in memory file uploads");
}
setValueForBinding(file, BindingNames.file);
}
else {
if (parent().hasBinding(BindingNames.inputStream)) {
InputStream inputStream = fileData.inputStream();
setValueForBinding(inputStream, BindingNames.inputStream);
}
else if (parent().hasBinding(BindingNames.bytes)) {
byte[] byteArray = fileData.data();
setValueForBinding(byteArray, BindingNames.bytes);
}
}
}
// This is here to balance the glid stack since we do not call super.