public static string Upload(string url, UploadFile[] files, NameValueCollection form)
        {
            HttpWebResponse resp = Upload((HttpWebRequest)WebRequest.Create(url), files, form);
            return resp.GetResponseHeader("Location");

            using (Stream s = resp.GetResponseStream())
            using (StreamReader sr = new StreamReader(s))
            {
                return sr.ReadToEnd();
            }
        }
Example #2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            master = Factory.GetDatabase("master");
            MediaItem media = master.GetItem(new ID(Request.QueryString["id"]));

            Stream mediaStream = media.GetMediaStream();

            var filename = media.DisplayName + "." + media.Extension;
            var filenamepath = Path.Combine(Server.MapPath("~/App_Data"), filename);

            String strUrl = HttpContext.Current.Request.Url.AbsoluteUri.Replace(HttpContext.Current.Request.Url.PathAndQuery, "/");
            strUrl = strUrl +  "/sitecore modules/pixlr/";
            

            SaveStreamToFile(filenamepath, mediaStream);
            
            UploadFile[] files = new UploadFile[] 
            { 
                new UploadFile(filenamepath)
            }; 

            
            NameValueCollection nv = new NameValueCollection();
            nv.Add("target", strUrl + "save.aspx");
            nv.Add("exit", strUrl + "exit.aspx");
            nv.Add("method", "get");
            nv.Add("title", media.ID.ToString().Replace("{", "").Replace("}", ""));
            nv.Add("locktarget", "true");
            nv.Add("locktitle", "true");
            nv.Add("referrer", "Sitecore");

            var response = Utils.HttpUploadHelper.Upload("http://pixlr.com/" + Request.QueryString["mode"] + "/",files , nv);

            File.Delete(filenamepath);

            Response.Redirect(response, true);
            Response.End();
        }
        public static HttpWebResponse Upload(HttpWebRequest req, UploadFile[] files, NameValueCollection form)
        {
            List<MimePart> mimeParts = new List<MimePart>();
            req.AllowAutoRedirect = false;

            try
            {
                foreach (string key in form.AllKeys)
                {
                    StringMimePart part = new StringMimePart();

                    part.Headers["Content-Disposition"] = "form-data; name=\"" + key + "\"";
                    part.StringData = form[key];

                    mimeParts.Add(part);
                }

                int nameIndex = 0;

                foreach (UploadFile file in files)
                {
                    StreamMimePart part = new StreamMimePart();

                    if (string.IsNullOrEmpty(file.FieldName))
                        file.FieldName = "image";

                    part.Headers["Content-Disposition"] = "form-data; name=\"" + file.FieldName + "\"; filename=\"" + file.FileName + "\"";
                    part.Headers["Content-Type"] = file.ContentType;

                    part.SetStream(file.Data);

                    mimeParts.Add(part);
                }

                string boundary = "----------" + DateTime.Now.Ticks.ToString("x");

                req.ContentType = "multipart/form-data; boundary=" + boundary;
                req.Method = "POST";

                long contentLength = 0;

                byte[] _footer = Encoding.UTF8.GetBytes("--" + boundary + "--\r\n");

                foreach (MimePart part in mimeParts)
                {
                    contentLength += part.GenerateHeaderFooterData(boundary);
                }

                req.ContentLength = contentLength + _footer.Length;

                byte[] buffer = new byte[8192];
                byte[] afterFile = Encoding.UTF8.GetBytes("\r\n");
                int read;

                using (Stream s = req.GetRequestStream())
                {
                    foreach (MimePart part in mimeParts)
                    {
                        s.Write(part.Header, 0, part.Header.Length);

                        while ((read = part.Data.Read(buffer, 0, buffer.Length)) > 0)
                            s.Write(buffer, 0, read);

                        part.Data.Dispose();

                        s.Write(afterFile, 0, afterFile.Length);
                    }

                    s.Write(_footer, 0, _footer.Length);
                }

                return (HttpWebResponse)req.GetResponse();
            }
            catch
            {
                foreach (MimePart part in mimeParts)
                    if (part.Data != null)
                        part.Data.Dispose();

                throw;
            }
        }