1 /* 2 * ==================================================================== 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * ==================================================================== 20 * 21 * This software consists of voluntary contributions made by many 22 * individuals on behalf of the Apache Software Foundation. For more 23 * information on the Apache Software Foundation, please see 24 * <http://www.apache.org/>. 25 * 26 */ 27 package org.apache.http.entity.mime.content; 28 29 import java.io.IOException; 30 import java.io.OutputStream; 31 32 import org.apache.http.entity.ContentType; 33 import org.apache.http.entity.mime.MIME; 34 import org.apache.http.util.Args; 35 36 /** 37 * Binary body part backed by a byte array. 38 * 39 * @see org.apache.http.entity.mime.MultipartEntityBuilder 40 * 41 * @since 4.1 42 */ 43 public class ByteArrayBody extends AbstractContentBody { 44 45 /** 46 * The contents of the file contained in this part. 47 */ 48 private final byte[] data; 49 50 /** 51 * The name of the file contained in this part. 52 */ 53 private final String filename; 54 55 /** 56 * Creates a new ByteArrayBody. 57 * 58 * @param data The contents of the file contained in this part. 59 * @param mimeType The MIME type of the file contained in this part. 60 * @param filename The name of the file contained in this part. 61 * 62 * @deprecated (4.3) use {@link ByteArrayBody#ByteArrayBody(byte[], ContentType, String)} 63 * or {@link org.apache.http.entity.mime.MultipartEntityBuilder} 64 */ 65 @Deprecated 66 public ByteArrayBody(final byte[] data, final String mimeType, final String filename) { 67 this(data, ContentType.create(mimeType), filename); 68 } 69 70 /** 71 * @since 4.3 72 */ 73 public ByteArrayBody(final byte[] data, final ContentType contentType, final String filename) { 74 super(contentType); 75 Args.notNull(data, "byte[]"); 76 this.data = data; 77 this.filename = filename; 78 } 79 80 /** 81 * Creates a new ByteArrayBody. 82 * 83 * @param data The contents of the file contained in this part. 84 * @param filename The name of the file contained in this part. 85 */ 86 public ByteArrayBody(final byte[] data, final String filename) { 87 this(data, "application/octet-stream", filename); 88 } 89 90 @Override 91 public String getFilename() { 92 return filename; 93 } 94 95 @Override 96 public void writeTo(final OutputStream out) throws IOException { 97 out.write(data); 98 } 99 100 @Override 101 public String getCharset() { 102 return null; 103 } 104 105 @Override 106 public String getTransferEncoding() { 107 return MIME.ENC_BINARY; 108 } 109 110 @Override 111 public long getContentLength() { 112 return data.length; 113 } 114 115 }