/** * Check from the request ContentType if this request is a Multipart request. * * @return an array of String if multipartDataBoundary exists with the multipartDataBoundary as * first element, charset if any as second (missing if not set), else null */ protected static String[] getMultipartDataBoundary(String contentType) { // Check if Post using "multipart/form-data; boundary=--89421926422648 [; charset=xxx]" String[] headerContentType = splitHeaderContentType(contentType); if (headerContentType[0].toLowerCase().startsWith(HttpHeaders.Values.MULTIPART_FORM_DATA)) { int mrank; int crank; if (headerContentType[1].toLowerCase().startsWith(HttpHeaders.Values.BOUNDARY)) { mrank = 1; crank = 2; } else if (headerContentType[2].toLowerCase().startsWith(HttpHeaders.Values.BOUNDARY)) { mrank = 2; crank = 1; } else { return null; } String boundary = StringUtil.substringAfter(headerContentType[mrank], '='); if (boundary == null) { throw new ErrorDataDecoderException("Needs a boundary value"); } if (boundary.charAt(0) == '"') { String bound = boundary.trim(); int index = bound.length() - 1; if (bound.charAt(index) == '"') { boundary = bound.substring(1, index); } } if (headerContentType[crank].toLowerCase().startsWith(HttpHeaders.Values.CHARSET)) { String charset = StringUtil.substringAfter(headerContentType[crank], '='); if (charset != null) { return new String[] {"--" + boundary, charset}; } } return new String[] {"--" + boundary}; } return null; }
@Override public String toString() { return StringUtil.simpleClassName(this) + "(name: " + name() + ", size: " + size() + ')'; }