List of usage examples for io.netty.handler.codec.http HttpHeaderNames CONTENT_DISPOSITION
AsciiString CONTENT_DISPOSITION
To view the source code for io.netty.handler.codec.http HttpHeaderNames CONTENT_DISPOSITION.
Click Source Link
From source file:dpfmanager.shell.modules.server.get.HttpGetHandler.java
License:Open Source License
private void setContentTypeHeader(HttpResponse response, File file) { MimetypesFileTypeMap mimeTypesMap = new MimetypesFileTypeMap(); response.headers().set(HttpHeaderNames.CONTENT_TYPE, mimeTypesMap.getContentType(file.getPath())); response.headers().set(HttpHeaderNames.CONTENT_DISPOSITION, "attachment; filename=report.zip"); }
From source file:org.ballerinalang.mime.util.MultipartDataSource.java
License:Open Source License
/** * Write body part headers to output stream. * * @param writer Represent the outputstream writer * @param bodyPart Represent ballerina body part * @throws IOException When an error occurs while writing body part headers *//*from w ww . java 2 s . c om*/ private void writeBodyPartHeaders(Writer writer, BMap<String, BValue> bodyPart) throws IOException { HttpHeaders httpHeaders; if (bodyPart.getNativeData(ENTITY_HEADERS) != null) { httpHeaders = (HttpHeaders) bodyPart.getNativeData(ENTITY_HEADERS); } else { httpHeaders = new DefaultHttpHeaders(); bodyPart.addNativeData(ENTITY_HEADERS, httpHeaders); } String contentType = MimeUtil.getContentTypeWithParameters(bodyPart); httpHeaders.set(HttpHeaderNames.CONTENT_TYPE.toString(), contentType); String contentDisposition = MimeUtil.getContentDisposition(bodyPart); if (!contentDisposition.isEmpty()) { httpHeaders.set(HttpHeaderNames.CONTENT_DISPOSITION.toString(), contentDisposition); } BValue contentId = bodyPart.get(CONTENT_ID_FIELD); if (contentId != null && !contentId.stringValue().isEmpty()) { httpHeaders.set(CONTENT_ID, contentId.stringValue()); } Iterator<Map.Entry<String, String>> iterator = httpHeaders.iteratorAsString(); while (iterator.hasNext()) { Map.Entry<String, String> entry = iterator.next(); writer.write(entry.getKey()); writer.write(COLON); writer.write(SPACE); writer.write(entry.getValue()); writer.write(CRLF); } // Mark the end of the headers for this body part writer.write(CRLF); writer.flush(); }
From source file:org.ballerinalang.mime.util.MultipartDecoder.java
License:Open Source License
/** * Populate ballerina body part with header info and actual body. * * @param context Represent ballerina context * @param mimePart Represent a decoded mime part * @param partStruct Represent a ballerina body part that needs to be filled with data * @param mediaType Represent the content type of the body part *//*from w w w . j a v a2s. co m*/ private static void populateBodyPart(Context context, MIMEPart mimePart, BMap<String, BValue> partStruct, BMap<String, BValue> mediaType) { partStruct.addNativeData(ENTITY_HEADERS, HeaderUtil.setBodyPartHeaders(mimePart.getAllHeaders(), new DefaultHttpHeaders())); populateContentLength(mimePart, partStruct); populateContentId(mimePart, partStruct); populateContentType(mimePart, partStruct, mediaType); List<String> contentDispositionHeaders = mimePart.getHeader(HttpHeaderNames.CONTENT_DISPOSITION.toString()); if (HeaderUtil.isHeaderExist(contentDispositionHeaders)) { BMap<String, BValue> contentDisposition = BLangConnectorSPIUtil.createObject(context, PROTOCOL_PACKAGE_MIME, CONTENT_DISPOSITION_STRUCT); populateContentDisposition(partStruct, contentDispositionHeaders, contentDisposition); } EntityBodyHandler.populateBodyContent(partStruct, mimePart); }
From source file:reactor.ipc.netty.http.client.HttpClientFormEncoder.java
License:Open Source License
/** * Add the InterfaceHttpData to the Body list * * @throws NullPointerException for data * @throws ErrorDataEncoderException if the encoding is in error or if the finalize * were already done *///ww w .j a v a2 s . co m void addBodyHttpData(InterfaceHttpData data) throws ErrorDataEncoderException { if (headerFinalized) { throw new ErrorDataEncoderException("Cannot add value once finalized"); } if (data == null) { throw new NullPointerException("data"); } bodyListDatas.add(data); if (!isMultipart) { if (data instanceof Attribute) { Attribute attribute = (Attribute) data; try { // name=value& with encoded name and attribute String key = encodeAttribute(attribute.getName(), charset); String value = encodeAttribute(attribute.getValue(), charset); Attribute newattribute = factory.createAttribute(request, key, value); multipartHttpDatas.add(newattribute); globalBodySize += newattribute.getName().length() + 1 + newattribute.length() + 1; } catch (IOException e) { throw new ErrorDataEncoderException(e); } } else if (data instanceof FileUpload) { // since not Multipart, only name=filename => Attribute FileUpload fileUpload = (FileUpload) data; // name=filename& with encoded name and filename String key = encodeAttribute(fileUpload.getName(), charset); String value = encodeAttribute(fileUpload.getFilename(), charset); Attribute newattribute = factory.createAttribute(request, key, value); multipartHttpDatas.add(newattribute); globalBodySize += newattribute.getName().length() + 1 + newattribute.length() + 1; } return; } /* * Logic: * if not Attribute: * add Data to body list * if (duringMixedMode) * add endmixedmultipart delimiter * currentFileUpload = null * duringMixedMode = false; * add multipart delimiter, multipart body header and Data to multipart list * reset currentFileUpload, duringMixedMode * if FileUpload: take care of multiple file for one field => mixed mode * if (duringMixeMode) * if (currentFileUpload.name == data.name) * add mixedmultipart delimiter, mixedmultipart body header and Data to multipart list * else * add endmixedmultipart delimiter, multipart body header and Data to multipart list * currentFileUpload = data * duringMixedMode = false; * else * if (currentFileUpload.name == data.name) * change multipart body header of previous file into multipart list to * mixedmultipart start, mixedmultipart body header * add mixedmultipart delimiter, mixedmultipart body header and Data to multipart list * duringMixedMode = true * else * add multipart delimiter, multipart body header and Data to multipart list * currentFileUpload = data * duringMixedMode = false; * Do not add last delimiter! Could be: * if duringmixedmode: endmixedmultipart + endmultipart * else only endmultipart */ if (data instanceof Attribute) { if (duringMixedMode) { InternalAttribute internal = new InternalAttribute(charset); internal.addValue("\r\n--" + multipartMixedBoundary + "--"); multipartHttpDatas.add(internal); multipartMixedBoundary = null; currentFileUpload = null; duringMixedMode = false; } InternalAttribute internal = new InternalAttribute(charset); if (!multipartHttpDatas.isEmpty()) { // previously a data field so CRLF internal.addValue("\r\n"); } internal.addValue("--" + multipartDataBoundary + "\r\n"); // content-disposition: form-data; name="field1" Attribute attribute = (Attribute) data; internal.addValue(HttpHeaderNames.CONTENT_DISPOSITION + ": " + HttpHeaderValues.FORM_DATA + "; " + HttpHeaderValues.NAME + "=\"" + attribute.getName() + "\"\r\n"); // Add Content-Length: xxx internal.addValue(HttpHeaderNames.CONTENT_LENGTH + ": " + attribute.length() + "\r\n"); Charset localcharset = attribute.getCharset(); if (localcharset != null) { // Content-Type: text/plain; charset=charset internal.addValue(HttpHeaderNames.CONTENT_TYPE + ": " + DEFAULT_TEXT_CONTENT_TYPE + "; " + HttpHeaderValues.CHARSET + '=' + localcharset.name() + "\r\n"); } // CRLF between body header and data internal.addValue("\r\n"); multipartHttpDatas.add(internal); multipartHttpDatas.add(data); globalBodySize += attribute.length() + internal.size(); } else if (data instanceof FileUpload) { FileUpload fileUpload = (FileUpload) data; InternalAttribute internal = new InternalAttribute(charset); if (!multipartHttpDatas.isEmpty()) { // previously a data field so CRLF internal.addValue("\r\n"); } boolean localMixed; if (duringMixedMode) { if (currentFileUpload != null && currentFileUpload.getName().equals(fileUpload.getName())) { // continue a mixed mode localMixed = true; } else { // end a mixed mode // add endmixedmultipart delimiter, multipart body header // and // Data to multipart list internal.addValue("--" + multipartMixedBoundary + "--"); multipartHttpDatas.add(internal); multipartMixedBoundary = null; // start a new one (could be replaced if mixed start again // from here internal = new InternalAttribute(charset); internal.addValue("\r\n"); localMixed = false; // new currentFileUpload and no more in Mixed mode currentFileUpload = fileUpload; duringMixedMode = false; } } else { if (encoderMode != EncoderMode.HTML5 && currentFileUpload != null && currentFileUpload.getName().equals(fileUpload.getName())) { // create a new mixed mode (from previous file) // change multipart body header of previous file into // multipart list to // mixedmultipart start, mixedmultipart body header // change Internal (size()-2 position in multipartHttpDatas) // from (line starting with *) // --AaB03x // * Content-Disposition: form-data; name="files"; // filename="file1.txt" // Content-Type: text/plain // to (lines starting with *) // --AaB03x // * Content-Disposition: form-data; name="files" // * Content-Type: multipart/mixed; boundary=BbC04y // * // * --BbC04y // * Content-Disposition: attachment; filename="file1.txt" // Content-Type: text/plain initMixedMultipart(); InternalAttribute pastAttribute = (InternalAttribute) multipartHttpDatas .get(multipartHttpDatas.size() - 2); // remove past size globalBodySize -= pastAttribute.size(); StringBuilder replacement = new StringBuilder( 139 + multipartDataBoundary.length() + multipartMixedBoundary.length() * 2 + fileUpload.getFilename().length() + fileUpload.getName().length()) .append("--").append(multipartDataBoundary).append("\r\n") .append(HttpHeaderNames.CONTENT_DISPOSITION).append(": ") .append(HttpHeaderValues.FORM_DATA).append("; ") .append(HttpHeaderValues.NAME).append("=\"") .append(fileUpload.getName()).append("\"\r\n") .append(HttpHeaderNames.CONTENT_TYPE).append(": ") .append(HttpHeaderValues.MULTIPART_MIXED).append("; ") .append(HttpHeaderValues.BOUNDARY).append('=') .append(multipartMixedBoundary).append("\r\n\r\n") .append("--").append(multipartMixedBoundary).append("\r\n") .append(HttpHeaderNames.CONTENT_DISPOSITION).append(": ") .append(HttpHeaderValues.ATTACHMENT).append("; "); if (!fileUpload.getFilename().isEmpty()) { replacement.append(HttpHeaderValues.FILENAME).append("=\"") .append(fileUpload.getFilename()); } replacement.append("\"\r\n"); pastAttribute.setValue(replacement.toString(), 1); pastAttribute.setValue("", 2); // update past size globalBodySize += pastAttribute.size(); // now continue // add mixedmultipart delimiter, mixedmultipart body header // and // Data to multipart list localMixed = true; duringMixedMode = true; } else { // a simple new multipart // add multipart delimiter, multipart body header and Data // to multipart list localMixed = false; currentFileUpload = fileUpload; duringMixedMode = false; } } if (localMixed) { // add mixedmultipart delimiter, mixedmultipart body header and // Data to multipart list internal.addValue("--" + multipartMixedBoundary + "\r\n"); // Content-Disposition: attachment; filename="file1.txt" if (!fileUpload.getFilename().isEmpty()) { internal.addValue(HttpHeaderNames.CONTENT_DISPOSITION + ": " + HttpHeaderValues.ATTACHMENT + "; " + HttpHeaderValues.FILENAME + "=\"" + fileUpload.getFilename() + "\"\r\n"); } else { internal.addValue( HttpHeaderNames.CONTENT_DISPOSITION + ": " + HttpHeaderValues.ATTACHMENT + ";\r\n"); } } else { internal.addValue("--" + multipartDataBoundary + "\r\n"); // Content-Disposition: form-data; name="files"; // filename="file1.txt" if (!fileUpload.getFilename().isEmpty()) { internal.addValue(HttpHeaderNames.CONTENT_DISPOSITION + ": " + HttpHeaderValues.FORM_DATA + "; " + HttpHeaderValues.NAME + "=\"" + fileUpload.getName() + "\"; " + HttpHeaderValues.FILENAME + "=\"" + fileUpload.getFilename() + "\"\r\n"); } else { internal.addValue(HttpHeaderNames.CONTENT_DISPOSITION + ": " + HttpHeaderValues.FORM_DATA + "; " + HttpHeaderValues.NAME + "=\"" + fileUpload.getName() + "\";\r\n"); } } // Add Content-Length: xxx internal.addValue(HttpHeaderNames.CONTENT_LENGTH + ": " + fileUpload.length() + "\r\n"); // Content-Type: image/gif // Content-Type: text/plain; charset=ISO-8859-1 // Content-Transfer-Encoding: binary internal.addValue(HttpHeaderNames.CONTENT_TYPE + ": " + fileUpload.getContentType()); String contentTransferEncoding = fileUpload.getContentTransferEncoding(); if (contentTransferEncoding != null && contentTransferEncoding.equals(DEFAULT_TRANSFER_ENCODING)) { internal.addValue("\r\n" + HttpHeaderNames.CONTENT_TRANSFER_ENCODING + ": " + DEFAULT_BINARY_CONTENT_TYPE + "\r\n\r\n"); } else if (fileUpload.getCharset() != null) { internal.addValue( "; " + HttpHeaderValues.CHARSET + '=' + fileUpload.getCharset().name() + "\r\n\r\n"); } else { internal.addValue("\r\n\r\n"); } multipartHttpDatas.add(internal); multipartHttpDatas.add(data); globalBodySize += fileUpload.length() + internal.size(); } }