private void DoUploadFile(string name, Stream data_stream, string mime_type, string [,] arguments) { string upload_url = GetUploadUrl(arguments); HttpWebRequest http_request = CreateHttpRequest( upload_url, "POST", true); MultipartRequest request = new MultipartRequest(http_request); MemoryStream mem_stream = null; if (null != UploadProgressChanged) { // "Manual buffering" using a MemoryStream. request.Request.AllowWriteStreamBuffering = false; mem_stream = new MemoryStream(); request.OutputStream = mem_stream; } request.BeginPart(true); request.AddHeader("Content-Disposition", "form-data; name=\"filename0\"; " + "filename=\"" + name + GetFileNameExtension( mime_type) + '"', false); request.AddHeader("Content-Type", mime_type, true); byte [] data_buffer = new byte [8192]; int read_count; while ((read_count = data_stream.Read( data_buffer, 0, data_buffer.Length)) > 0) { request.WritePartialContent( data_buffer, 0, read_count); } request.EndPartialContent(); request.EndPart(true); if (null != UploadProgressChanged) { int total = (int)request.OutputStream.Length; request.Request.ContentLength = total; string progress_title = String.Format( Catalog.GetString("Uploading " + "photo " + "\"{0}\""), name); using (Stream request_stream = request.Request .GetRequestStream()) { byte [] buffer = mem_stream.GetBuffer(); int write_count = 0; for (int offset = 0; offset < total; offset += write_count) { FireUploadProgress( progress_title, offset, total); write_count = System.Math.Min( 16384, total - offset); request_stream.Write(buffer, offset, write_count); } FireUploadProgress(progress_title, total, total); } } SendRequest("upload", request.Request, true); }
private void DoUploadFile(string name, Stream data_stream, string mime_type, string [,] arguments) { string upload_url = GetUploadUrl (arguments); HttpWebRequest http_request = CreateHttpRequest ( upload_url, "POST", true); MultipartRequest request = new MultipartRequest (http_request); MemoryStream mem_stream = null; if (null != UploadProgressChanged) { // "Manual buffering" using a MemoryStream. request.Request.AllowWriteStreamBuffering = false; mem_stream = new MemoryStream (); request.OutputStream = mem_stream; } request.BeginPart (true); request.AddHeader ("Content-Disposition", "form-data; name=\"filename0\"; " + "filename=\"" + name + GetFileNameExtension ( mime_type) + '"', false); request.AddHeader ("Content-Type", mime_type, true); byte [] data_buffer = new byte [8192]; int read_count; while ((read_count = data_stream.Read ( data_buffer, 0, data_buffer.Length)) > 0) { request.WritePartialContent ( data_buffer, 0, read_count); } request.EndPartialContent (); request.EndPart (true); if (null != UploadProgressChanged) { int total = (int) request.OutputStream.Length; request.Request.ContentLength = total; string progress_title = String.Format ( Catalog.GetString ("Uploading " + "photo " + "\"{0}\""), name); using (Stream request_stream = request.Request .GetRequestStream ()) { byte [] buffer = mem_stream.GetBuffer (); int write_count = 0; for (int offset = 0; offset < total; offset += write_count) { FireUploadProgress ( progress_title, offset, total); write_count = System.Math.Min ( 16384, total - offset); request_stream.Write (buffer, offset, write_count); } FireUploadProgress (progress_title, total, total); } } SendRequest ("upload", request.Request, true); }