@@ -33,82 +33,102 @@ public abstract class Part implements com.ning.http.client.Part {
33
33
/**
34
34
* Carriage return/linefeed
35
35
*/
36
- protected static final String CRLF = "\r \n " ;
36
+ public static final String CRLF = "\r \n " ;
37
37
38
38
/**
39
39
* Carriage return/linefeed as a byte array
40
40
*/
41
- static final byte [] CRLF_BYTES = MultipartEncodingUtil .getAsciiBytes (CRLF );
41
+ public static final byte [] CRLF_BYTES = MultipartEncodingUtil .getAsciiBytes (CRLF );
42
42
43
43
/**
44
44
* Content dispostion characters
45
45
*/
46
- protected static final String QUOTE = "\" " ;
46
+ public static final String QUOTE = "\" " ;
47
47
48
48
/**
49
49
* Content dispostion as a byte array
50
50
*/
51
- static final byte [] QUOTE_BYTES = MultipartEncodingUtil .getAsciiBytes (QUOTE );
51
+ public static final byte [] QUOTE_BYTES = MultipartEncodingUtil .getAsciiBytes (QUOTE );
52
52
53
53
/**
54
54
* Extra characters
55
55
*/
56
- protected static final String EXTRA = "--" ;
56
+ public static final String EXTRA = "--" ;
57
57
58
58
/**
59
59
* Extra characters as a byte array
60
60
*/
61
- static final byte [] EXTRA_BYTES = MultipartEncodingUtil .getAsciiBytes (EXTRA );
61
+ public static final byte [] EXTRA_BYTES = MultipartEncodingUtil .getAsciiBytes (EXTRA );
62
62
63
63
/**
64
- * Content dispostion characters
64
+ * Content disposition characters
65
65
*/
66
- protected static final String CONTENT_DISPOSITION = "Content-Disposition: form-data; name= " ;
66
+ public static final String CONTENT_DISPOSITION = "Content-Disposition: " ;
67
67
68
68
/**
69
- * Content dispostion as a byte array
69
+ * Content disposition as a byte array
70
+ */
71
+ public static final byte [] CONTENT_DISPOSITION_BYTES = MultipartEncodingUtil .getAsciiBytes (CONTENT_DISPOSITION );
72
+
73
+ /**
74
+ * form-data characters
75
+ */
76
+ public static final String FORM_DATA_DISPOSITION_TYPE = "form-data" ;
77
+
78
+ /**
79
+ * form-data as a byte array
80
+ */
81
+ public static final byte [] FORM_DATA_DISPOSITION_TYPE_BYTES = MultipartEncodingUtil .getAsciiBytes (FORM_DATA_DISPOSITION_TYPE );
82
+
83
+ /**
84
+ * name characters
70
85
*/
71
- static final byte [] CONTENT_DISPOSITION_BYTES = MultipartEncodingUtil .getAsciiBytes (CONTENT_DISPOSITION );
86
+ public static final String NAME = "; name=" ;
87
+
88
+ /**
89
+ * name as a byte array
90
+ */
91
+ public static final byte [] NAME_BYTES = MultipartEncodingUtil .getAsciiBytes (NAME );
72
92
73
93
/**
74
94
* Content type header
75
95
*/
76
- protected static final String CONTENT_TYPE = "Content-Type: " ;
96
+ public static final String CONTENT_TYPE = "Content-Type: " ;
77
97
78
98
/**
79
99
* Content type header as a byte array
80
100
*/
81
- static final byte [] CONTENT_TYPE_BYTES = MultipartEncodingUtil .getAsciiBytes (CONTENT_TYPE );
101
+ public static final byte [] CONTENT_TYPE_BYTES = MultipartEncodingUtil .getAsciiBytes (CONTENT_TYPE );
82
102
83
103
/**
84
104
* Content charset
85
105
*/
86
- protected static final String CHARSET = "; charset=" ;
106
+ public static final String CHARSET = "; charset=" ;
87
107
88
108
/**
89
109
* Content charset as a byte array
90
110
*/
91
- static final byte [] CHARSET_BYTES = MultipartEncodingUtil .getAsciiBytes (CHARSET );
111
+ public static final byte [] CHARSET_BYTES = MultipartEncodingUtil .getAsciiBytes (CHARSET );
92
112
93
113
/**
94
114
* Content type header
95
115
*/
96
- protected static final String CONTENT_TRANSFER_ENCODING = "Content-Transfer-Encoding: " ;
116
+ public static final String CONTENT_TRANSFER_ENCODING = "Content-Transfer-Encoding: " ;
97
117
98
118
/**
99
119
* Content type header as a byte array
100
120
*/
101
- static final byte [] CONTENT_TRANSFER_ENCODING_BYTES = MultipartEncodingUtil .getAsciiBytes (CONTENT_TRANSFER_ENCODING );
121
+ public static final byte [] CONTENT_TRANSFER_ENCODING_BYTES = MultipartEncodingUtil .getAsciiBytes (CONTENT_TRANSFER_ENCODING );
102
122
103
123
/**
104
124
* Content type header
105
125
*/
106
- protected static final String CONTENT_ID = "Content-ID: " ;
126
+ public static final String CONTENT_ID = "Content-ID: " ;
107
127
108
128
/**
109
129
* Content type header as a byte array
110
130
*/
111
- static final byte [] CONTENT_ID_BYTES = MultipartEncodingUtil .getAsciiBytes (CONTENT_ID );
131
+ public static final byte [] CONTENT_ID_BYTES = MultipartEncodingUtil .getAsciiBytes (CONTENT_ID );
112
132
113
133
/**
114
134
* Return the name of this part.
@@ -155,6 +175,20 @@ public boolean isRepeatable() {
155
175
return true ;
156
176
}
157
177
178
+ private String dispositionType ;
179
+ /**
180
+ * Gets the disposition-type to be used in Content-Disposition header
181
+ *
182
+ * @return the disposition-type
183
+ */
184
+ public String getDispositionType () {
185
+ return dispositionType ;
186
+ }
187
+
188
+ public void setDispositionType (String dispositionType ) {
189
+ this .dispositionType = dispositionType ;
190
+ }
191
+
158
192
/**
159
193
* Write the start to the specified output stream
160
194
*
@@ -181,6 +215,11 @@ protected void sendDispositionHeader(OutputStream out) throws IOException {
181
215
if (getName () != null ) {
182
216
out .write (CRLF_BYTES );
183
217
out .write (CONTENT_DISPOSITION_BYTES );
218
+ if (dispositionType != null )
219
+ out .write (MultipartEncodingUtil .getAsciiBytes (dispositionType ));
220
+ else
221
+ out .write (FORM_DATA_DISPOSITION_TYPE_BYTES );
222
+ out .write (NAME_BYTES );
184
223
out .write (QUOTE_BYTES );
185
224
out .write (MultipartEncodingUtil .getAsciiBytes (getName ()));
186
225
out .write (QUOTE_BYTES );
@@ -192,6 +231,11 @@ protected long dispositionHeaderLength() {
192
231
if (getName () != null ) {
193
232
length += CRLF_BYTES .length ;
194
233
length += CONTENT_DISPOSITION_BYTES .length ;
234
+ if (dispositionType != null )
235
+ length += MultipartEncodingUtil .getAsciiBytes (dispositionType ).length ;
236
+ else
237
+ length += FORM_DATA_DISPOSITION_TYPE_BYTES .length ;
238
+ length += NAME_BYTES .length ;
195
239
length += QUOTE_BYTES .length ;
196
240
length += MultipartEncodingUtil .getAsciiBytes (getName ()).length ;
197
241
length += QUOTE_BYTES .length ;
0 commit comments