55import java .io .InputStream ;
66import java .io .UnsupportedEncodingException ;
77import java .nio .charset .Charset ;
8+ import java .util .Map ;
89import java .util .zip .CRC32 ;
910import java .util .zip .CheckedInputStream ;
1011
@@ -38,12 +39,19 @@ private static PutRet put(String uptoken, String key, File file,
3839 AbstractContentBody fileBody = buildFileBody (file , extra );
3940 requestEntity .addPart ("file" , fileBody );
4041 setKey (requestEntity , key );
42+ setParam (requestEntity , extra .params );
4143 if (extra .checkCrc != NO_CRC32 ) {
4244 if (extra .crc32 == 0 ) {
4345 return new PutRet (new CallRet (400 , new Exception ("no crc32 specified!" )));
4446 }
4547 requestEntity .addPart ("crc32" , new StringBody (extra .crc32 + "" ));
46- }
48+ }
49+
50+ if (extra .params != null ) {
51+ for (Map .Entry <String , String > xvar : extra .params .entrySet ()) {
52+ requestEntity .addPart (xvar .getKey (), new StringBody (xvar .getValue (), Charset .forName (Config .CHARSET )));
53+ }
54+ }
4755 } catch (Exception e ) {
4856 e .printStackTrace ();
4957 return new PutRet (new CallRet (400 , e ));
@@ -64,17 +72,27 @@ private static FileBody buildFileBody(File file,PutExtra extra){
6472
6573 private static void setKey (MultipartEntity requestEntity , String key ) throws UnsupportedEncodingException {
6674 if (key != null ){
67- requestEntity .addPart ("key" , new StringBody (key ,Charset .forName ("utf-8" )));
75+ requestEntity .addPart ("key" , new StringBody (key ,Charset .forName (Config .CHARSET )));
76+ }
77+ }
78+
79+ private static void setParam (MultipartEntity requestEntity , Map <String , String > params ) throws UnsupportedEncodingException {
80+ if (params == null ){
81+ return ;
82+ }
83+ for (String name : params .keySet ()){
84+ requestEntity .addPart (name , new StringBody (params .get (name ),Charset .forName (Config .CHARSET )));
6885 }
6986 }
7087
71- private static PutRet putStream (String uptoken , String key , InputStream reader ,PutExtra extra ) {
88+ private static PutRet putStream (String uptoken , String key , InputStream reader ,PutExtra extra , String fileName ) {
7289 MultipartEntity requestEntity = new MultipartEntity ();
7390 try {
7491 requestEntity .addPart ("token" , new StringBody (uptoken ));
75- AbstractContentBody inputBody = buildInputStreamBody (reader , extra , key );
92+ AbstractContentBody inputBody = buildInputStreamBody (reader , extra , fileName != null ? fileName : "null" );
7693 requestEntity .addPart ("file" , inputBody );
7794 setKey (requestEntity , key );
95+ setParam (requestEntity , extra .params );
7896 if (extra .checkCrc != NO_CRC32 ) {
7997 if (extra .crc32 == 0 ) {
8098 return new PutRet (new CallRet (400 , new Exception ("no crc32 specified!" )));
@@ -91,19 +109,26 @@ private static PutRet putStream(String uptoken, String key, InputStream reader,P
91109 return new PutRet (ret );
92110 }
93111
94- private static InputStreamBody buildInputStreamBody (InputStream reader ,PutExtra extra , String key ){
112+ private static InputStreamBody buildInputStreamBody (InputStream reader ,PutExtra extra , String fileName ){
95113 if (extra .mimeType != null ){
96- return new InputStreamBody (reader , extra .mimeType , key );
114+ return new InputStreamBody (reader , extra .mimeType , fileName );
97115 }else {
98- return new InputStreamBody (reader , key );
116+ return new InputStreamBody (reader , fileName );
99117 }
100118 }
101119
120+ public static PutRet put (String uptoken ,String key ,InputStream reader ,PutExtra extra ){
121+ return putStream (uptoken ,key ,reader ,extra , null );
122+ }
123+
124+ public static PutRet put (String uptoken ,String key ,InputStream reader ,PutExtra extra , String fileName ){
125+ return putStream (uptoken ,key ,reader ,extra , fileName );
126+ }
127+
102128
103129 public static PutRet Put (String uptoken ,String key ,InputStream reader ,PutExtra extra )
104130 {
105- PutRet ret = putStream (uptoken ,key ,reader ,extra );
106- return ret ;
131+ return put (uptoken ,key ,reader ,extra );
107132 }
108133
109134
0 commit comments