Пример #1
0
        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);
        }
Пример #2
0
        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";
            }
        }
Пример #3
0
 public byte[] DownloadFile(Object obj, TaskScheduler ts, Uri url, NotifyUpload method)
 {
     return(null);
 }
Пример #4
0
 public byte[] DownloadFile(Object obj, TaskScheduler ts, string fileName, NotifyUpload method)
 {
     return(null);
 }
Пример #5
0
        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);
        }
Пример #6
0
 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)));
 }
Пример #7
0
 public string UploadImage(Object obj, TaskScheduler ts, string fileName, int albumNumber, NotifyUpload method)
 {
     return(null);
 }