internal static MultipartData BuildMultipartData(Photo photo) { MultipartData data = new MultipartData (); data.Add (new MultipartData.Parameter ("image", photo.Filepath, MultipartData.Parameter.ParamType.File)); data.Add (new MultipartData.Parameter ("title", photo.Title, MultipartData.Parameter.ParamType.Field)); data.Add (new MultipartData.Parameter ("access_type", Photo.ToString (photo.AccessLevel), MultipartData.Parameter.ParamType.Field)); data.Add (new MultipartData.Parameter ("disable_comments", photo.DisableComments.ToString ().ToLower (), MultipartData.Parameter.ParamType.Field)); data.Add (new MultipartData.Parameter ("hide_orignal", photo.HideOriginal.ToString ().ToLower (), MultipartData.Parameter.ParamType.Field)); data.Add (new MultipartData.Parameter ("xxx", photo.AdultContent.ToString ().ToLower (), MultipartData.Parameter.ParamType.Field)); return data; }
internal string PostMultipart(string uri, MultipartData data, bool async) { const string boundary = "AaB03x"; HttpWebRequest request = CreateRequest (uri); request.Method = "POST"; request.ContentType = "multipart/form-data; boundary=" + boundary; Stream content = data.Form (boundary); request.ContentLength = content.Length; request.AllowWriteStreamBuffering = false; Stream request_stream = request.GetRequestStream (); byte[] buffer = new byte[1024]; int read; long readBytes = 0; while((read = content.Read(buffer, 0, buffer.Length)) > 0) { request_stream.Write(buffer, 0, read); readBytes += read; if (async) { OnRequestProgressChanged ( new RequestProgressChangedEventArgs ( RequestMethod.PostMultipart, readBytes, content.Length)); } } if (async) OnRequestCompleted (new RequestCompletedEventArgs ( RequestMethod.PostMultipart)); request_stream.Close (); content.Close (); return WebHelper.GetResponseString (request); }
internal string PostMultipart(string uri, MultipartData data) { return PostMultipart (uri, data, false); }