public string UploadImage(Object obj, TaskScheduler ts, string fileName, int albumNumber = 0, NotifyUpload method = null) { string albumHref = ""; string uploadedUrl = ""; long fileSize; albumHref = (Albums.Count == 0 || albumNumber == 0) ? PhotosHref : Albums[albumNumber - 1].href + "photos/"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(albumHref); request.Credentials = CredentialCache.DefaultCredentials; request.Headers["Authorization"] = "OAuth " + mysettings.OAuthToken; request.ContentType = "image/jpeg"; request.Method = "POST"; try { using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read)) { request.ContentLength = fs.Length; fileSize = fs.Length; using (Stream dataStream = request.GetRequestStream()) { long uploaded = 0; using (BinaryReader br = new BinaryReader(fs)) { byte[] buffer = br.ReadBytes(BufferSize); while (buffer.Length > 0) { uploaded += buffer.Length; if (method != null) { Task.Factory.StartNew(() => method.Invoke(obj, (int)(uploaded / (float)fileSize * 100)), CancellationToken.None, TaskCreationOptions.None, ts); } dataStream.Write(buffer, 0, buffer.Length); buffer = br.ReadBytes(BufferSize); } br.Close(); } //dataStream.Close(); } fs.Close(); } using (WebResponse response = request.GetResponse()) { string status = ((HttpWebResponse)response).StatusDescription; if (((HttpWebResponse)response).StatusCode != HttpStatusCode.Created) { return(null); } using (Stream responseStream = response.GetResponseStream()) { using (StreamReader reader = new StreamReader(responseStream)) { string result = reader.ReadToEnd(); XmlDocument doc = new XmlDocument(); doc.LoadXml(result); XmlNodeList nodelist = doc.DocumentElement.ChildNodes; foreach (XmlNode item in nodelist) { if (item.Name == "content") { uploadedUrl = item.Attributes["src"].Value; } } reader.Close(); } responseStream.Close(); } response.Close(); } } catch (Exception ex) { Log(string.Format("Upload image from file {0}", fileName), ex.ToString()); } return(uploadedUrl); }
public async void UploadImage(ImageListViewItem item, Uri url, int albumNumber = 0, NotifyUpload method = null) { ListViewItem lvitem = null; if (item.Text.Contains("Error")) { int index = 0;; if (item.Tag != null && int.TryParse(item.Tag.ToString(), out index)) { lvitem = listView1.Items[index]; item.Text = lvitem.Text; } } else { lvitem = listView1.Items.Add(url.ToString()); lvitem.SubItems.Add("0%"); } item.Text = "Uploading..."; item.Tag = lvitem.Index; string result = await Program.yf.UploadImageAsync(lvitem, uiScheduler, url, albumNumber, method); toolStripProgressBar1.Increment(1); if (toolStripProgressBar1.Value == toolStripProgressBar1.Maximum) { await Task.Run(() => Thread.Sleep(1000)).ContinueWith(t => toolStripProgressBar1.Visible = false, uiScheduler); } if (!string.IsNullOrEmpty(result)) { lvitem.Text = result; lvitem.SubItems[1].Text = "OK"; item.Text = "Uploaded"; } else { lvitem.SubItems[1].Text = "Error :("; item.Text = "Error"; } }
public byte[] DownloadFile(Object obj, TaskScheduler ts, Uri url, NotifyUpload method) { return(null); }
public byte[] DownloadFile(Object obj, TaskScheduler ts, string fileName, NotifyUpload method) { return(null); }
public string UploadImage(Object obj, TaskScheduler ts, Uri fileUrl, int albumNumber = 0, NotifyUpload method = null) { string albumHref; string contentType; string uploadedUrl = ""; byte[] file; long fileSize; albumHref = (Albums.Count == 0 || albumNumber == 0) ? PhotosHref: albumHref = Albums[albumNumber - 1].href + "photos/"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(fileUrl); request.Credentials = CredentialCache.DefaultCredentials; request.Method = "GET"; try { using (MemoryStream memoryStream = new MemoryStream()) { BinaryWriter writer = new BinaryWriter(memoryStream); using (WebResponse response = request.GetResponse()) { string status = ((HttpWebResponse)response).StatusDescription; contentType = response.ContentType; if (!contentType.Contains("image") || ((HttpWebResponse)response).StatusCode != HttpStatusCode.OK) { return(null); } fileSize = response.ContentLength; using (Stream responseStream = response.GetResponseStream()) { long uploaded = 0; using (BinaryReader br = new BinaryReader(responseStream)) { byte[] buffer = br.ReadBytes(BufferSize); while (buffer.Length > 0) { uploaded += buffer.Length; writer.Write(buffer); buffer = br.ReadBytes(BufferSize); if (method != null) { Task.Factory.StartNew(() => method.Invoke(obj, fileSize == -1 ? 0 : (int)(uploaded / (float)fileSize * 50)), CancellationToken.None, TaskCreationOptions.None, ts); } } file = memoryStream.GetBuffer(); br.Close(); } responseStream.Close(); } response.Close(); } if (fileSize == -1) { fileSize = memoryStream.Length; } HttpWebRequest requestPost = (HttpWebRequest)WebRequest.Create(albumHref); requestPost.Headers["Authorization"] = "OAuth " + mysettings.OAuthToken; requestPost.ContentType = contentType; requestPost.Method = "POST"; requestPost.ContentLength = fileSize; memoryStream.Position = 0; using (Stream dataStream = requestPost.GetRequestStream()) { long uploaded = 0; using (BinaryReader br = new BinaryReader(memoryStream)) { byte[] buffer = br.ReadBytes(BufferSize); while (buffer.Length > 0) { uploaded += buffer.Length; if (method != null) { Task.Factory.StartNew(() => method.Invoke(obj, 50 + (int)(uploaded / (float)fileSize * 50)), CancellationToken.None, TaskCreationOptions.None, ts); } dataStream.Write(buffer, 0, buffer.Length); buffer = br.ReadBytes(BufferSize); } br.Close(); } dataStream.Close(); } using (WebResponse response = requestPost.GetResponse()) { string status = ((HttpWebResponse)response).StatusDescription; if (((HttpWebResponse)response).StatusCode != HttpStatusCode.Created) { return(null); } using (Stream responseStream = response.GetResponseStream()) { using (StreamReader reader = new StreamReader(responseStream)) { string result = reader.ReadToEnd(); XmlDocument doc = new XmlDocument(); doc.LoadXml(result); XmlNodeList nodelist = doc.DocumentElement.ChildNodes; foreach (XmlNode item in nodelist) { if (item.Name == "content") { uploadedUrl = item.Attributes["src"].Value; } } reader.Close(); } responseStream.Close(); } response.Close(); } memoryStream.Close(); } } catch (Exception ex) { Log("Upload image from URL:" + fileUrl.ToString(), ex.ToString()); } return(uploadedUrl); }
public Task <string> UploadImageAsync(Object obj, TaskScheduler ts, string fileName, int albumNumber = 0, NotifyUpload method = null) { return(Task.Run(() => UploadImage(obj, ts, fileName, albumNumber, method))); }
public string UploadImage(Object obj, TaskScheduler ts, string fileName, int albumNumber, NotifyUpload method) { return(null); }