public HttpResponseMessage UploadFromUrl(UploadByUrlDto dto)
        {
            FileUploadDto result;
            WebResponse response = null;
            Stream responseStream = null;
            var mediaTypeFormatter = new JsonMediaTypeFormatter();
            mediaTypeFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/plain"));
            try
            {
                var request = (HttpWebRequest) WebRequest.Create(dto.Url);
                request.Credentials = CredentialCache.DefaultCredentials;
                response = request.GetResponse();
                responseStream = response.GetResponseStream();
                if (responseStream == null)
                {
                    throw new Exception("No server response");
                }
                var inMemoryStream = new MemoryStream();
                {
                    var count = 0;
                    do
                    {
                        var buffer = new byte[4096];
                        count = responseStream.Read(buffer, 0, 4096);
                        inMemoryStream.Write(buffer, 0, count);
                    } while (responseStream.CanRead && count > 0);

                    var segments = dto.Url.Split('/');
                    var fileName = segments[segments.Length - 1];
                    result = UploadFile(inMemoryStream, PortalSettings, UserInfo, dto.Folder.TextOrEmpty(), dto.Filter.TextOrEmpty(),
                        fileName, dto.Overwrite, dto.IsHostMenu, dto.Unzip);

                    /* Response Content Type cannot be application/json 
                     * because IE9 with iframe-transport manages the response 
                     * as a file download 
                     */
                    return Request.CreateResponse(
                        HttpStatusCode.OK,
                        result,
                        mediaTypeFormatter,
                        "text/plain");
                }
            }
            catch (Exception ex)
            {
                result = new FileUploadDto
                {
                    Message = ex.Message
                };
                return Request.CreateResponse(
                    HttpStatusCode.OK,
                    result,
                    mediaTypeFormatter,
                    "text/plain");
            }
            finally
            {
                if (response != null)
                {
                    response.Close();
                }
                if (responseStream != null)
                {
                    responseStream.Close();
                }
            }
        }
        public HttpResponseMessage UploadFromUrl(UploadByUrlDto dto)
        {
            WebResponse response = null;
            Stream responseStream = null;
            var mediaTypeFormatter = new JsonMediaTypeFormatter();
            mediaTypeFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/plain"));
            try
            {
                var request = (HttpWebRequest) WebRequest.Create(dto.Url);
                request.Credentials = CredentialCache.DefaultCredentials;
                response = request.GetResponse();
                responseStream = response.GetResponseStream();
                if (responseStream == null)
                {
                    throw new Exception("No server response");
                }
                var inMemoryStream = new MemoryStream();
                {
                    var count = 0;
                    do
                    {
                        var buffer = new byte[4096];
                        count = responseStream.Read(buffer, 0, 4096);
                        inMemoryStream.Write(buffer, 0, count);
                    } while (responseStream.CanRead && count > 0);

                    string errorMessage;
                    bool alreadyExists;

                    var segments = dto.Url.Split('/');
                    var fileName = segments[segments.Length - 1];
                    var returnFilename = SaveFile(inMemoryStream, PortalSettings, UserInfo, dto.Folder.TextOrEmpty(), dto.Filter.TextOrEmpty(),
                                                  fileName, dto.Overwrite, dto.IsHostMenu, dto.Unzip, out alreadyExists,
                                                  out errorMessage);

                    var root = AppDomain.CurrentDomain.BaseDirectory;
                    returnFilename = returnFilename.Replace(root, "~/");

                    var size = IsImage(returnFilename) ?
                        ImageHeader.GetDimensions(HostingEnvironment.MapPath(returnFilename)) :
                        Size.Empty;

                    /* Response Content Type cannot be application/json 
                     * because IE9 with iframe-transport manages the response 
                     * as a file download 
                     */
                    return Request.CreateResponse(
                        HttpStatusCode.OK,
                        new UploadDto { AlreadyExists = alreadyExists, Message = errorMessage, Orientation = size.Orientation(), Path = VirtualPathUtility.ToAbsolute(returnFilename) },
                        mediaTypeFormatter,
                        "text/plain");
                }
            }
            catch (Exception ex)
            {
                return Request.CreateResponse(
                    HttpStatusCode.OK,
                    new UploadDto { AlreadyExists = false, Message = ex.Message },
                    mediaTypeFormatter,
                    "text/plain");
            }
            finally
            {
                if (response != null)
                {
                    response.Close();
                }
                if (responseStream != null)
                {
                    responseStream.Close();
                }
            }
        }
        public HttpResponseMessage UploadFromUrl(UploadByUrlDto dto)
        {
            FileUploadDto result;
            WebResponse   response           = null;
            Stream        responseStream     = null;
            var           mediaTypeFormatter = new JsonMediaTypeFormatter();

            mediaTypeFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/plain"));
            try
            {
                var request = (HttpWebRequest)WebRequest.Create(dto.Url);
                request.Credentials = CredentialCache.DefaultCredentials;
                response            = request.GetResponse();
                responseStream      = response.GetResponseStream();
                if (responseStream == null)
                {
                    throw new Exception("No server response");
                }
                var inMemoryStream = new MemoryStream();
                {
                    var count = 0;
                    do
                    {
                        var buffer = new byte[4096];
                        count = responseStream.Read(buffer, 0, 4096);
                        inMemoryStream.Write(buffer, 0, count);
                    } while (responseStream.CanRead && count > 0);

                    var segments = dto.Url.Split('/');
                    var fileName = segments[segments.Length - 1];
                    result = UploadFile(inMemoryStream, PortalSettings, UserInfo, dto.Folder.TextOrEmpty(), dto.Filter.TextOrEmpty(),
                                        fileName, dto.Overwrite, dto.IsHostMenu, dto.Unzip);

                    /* Response Content Type cannot be application/json
                     * because IE9 with iframe-transport manages the response
                     * as a file download
                     */
                    return(Request.CreateResponse(
                               HttpStatusCode.OK,
                               result,
                               mediaTypeFormatter,
                               "text/plain"));
                }
            }
            catch (Exception ex)
            {
                result = new FileUploadDto
                {
                    Message = ex.Message
                };
                return(Request.CreateResponse(
                           HttpStatusCode.OK,
                           result,
                           mediaTypeFormatter,
                           "text/plain"));
            }
            finally
            {
                if (response != null)
                {
                    response.Close();
                }
                if (responseStream != null)
                {
                    responseStream.Close();
                }
            }
        }
Beispiel #4
0
        public HttpResponseMessage UploadFromUrl(UploadByUrlDto dto)
        {
            FileUploadDto result;
            WebResponse   response           = null;
            Stream        responseStream     = null;
            var           mediaTypeFormatter = new JsonMediaTypeFormatter();

            mediaTypeFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/plain"));

            if (VerifySafeUrl(dto.Url) == false)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest));
            }

            try
            {
                var request = (HttpWebRequest)WebRequest.Create(dto.Url);
                request.Credentials = CredentialCache.DefaultCredentials;
                response            = request.GetResponse();
                responseStream      = response.GetResponseStream();
                if (responseStream == null)
                {
                    throw new Exception("No server response");
                }

                var fileName = GetFileName(response);
                if (string.IsNullOrEmpty(fileName))
                {
                    fileName = HttpUtility.UrlDecode(new Uri(dto.Url).Segments.Last());
                }

                var portalId = dto.PortalId;
                if (portalId > -1)
                {
                    if (!IsPortalIdValid(portalId))
                    {
                        throw new HttpResponseException(HttpStatusCode.Unauthorized);
                    }
                }
                else
                {
                    portalId = PortalSettings.PortalId;
                }

                result = UploadFile(responseStream, portalId, UserInfo, dto.Folder.ValueOrEmpty(), dto.Filter.ValueOrEmpty(),
                                    fileName, dto.Overwrite, dto.IsHostMenu, dto.Unzip);

                /* Response Content Type cannot be application/json
                 * because IE9 with iframe-transport manages the response
                 * as a file download
                 */
                return(Request.CreateResponse(
                           HttpStatusCode.OK,
                           result,
                           mediaTypeFormatter,
                           "text/plain"));
            }
            catch (Exception ex)
            {
                result = new FileUploadDto
                {
                    Message = ex.Message
                };
                return(Request.CreateResponse(
                           HttpStatusCode.OK,
                           result,
                           mediaTypeFormatter,
                           "text/plain"));
            }
            finally
            {
                if (response != null)
                {
                    response.Close();
                }
                if (responseStream != null)
                {
                    responseStream.Close();
                }
            }
        }
        public HttpResponseMessage UploadFromUrl(UploadByUrlDto dto)
        {
            FileUploadDto result;
            WebResponse response = null;
            Stream responseStream = null;
            var mediaTypeFormatter = new JsonMediaTypeFormatter();
            mediaTypeFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/plain"));

            if (VerifySafeUrl(dto.Url) == false)
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }


    try
            {
                var request = (HttpWebRequest) WebRequest.Create(dto.Url);
                request.Credentials = CredentialCache.DefaultCredentials;
                response = request.GetResponse();
                responseStream = response.GetResponseStream();
                if (responseStream == null)
                {
                    throw new Exception("No server response");
                }

                var fileName = new Uri(dto.Url).Segments.Last();                    
                result = UploadFile(responseStream, PortalSettings, UserInfo, dto.Folder.TextOrEmpty(), dto.Filter.TextOrEmpty(),
                    fileName, dto.Overwrite, dto.IsHostMenu, dto.Unzip);

                /* Response Content Type cannot be application/json 
                    * because IE9 with iframe-transport manages the response 
                    * as a file download 
                    */
                return Request.CreateResponse(
                    HttpStatusCode.OK,
                    result,
                    mediaTypeFormatter,
                    "text/plain");
            }
            catch (Exception ex)
            {
                result = new FileUploadDto
                {
                    Message = ex.Message
                };
                return Request.CreateResponse(
                    HttpStatusCode.OK,
                    result,
                    mediaTypeFormatter,
                    "text/plain");
            }
            finally
            {
                if (response != null)
                {
                    response.Close();
                }
                if (responseStream != null)
                {
                    responseStream.Close();
                }
            }
        }
Beispiel #6
0
        public HttpResponseMessage UploadFromUrl(UploadByUrlDto dto)
        {
            WebResponse response           = null;
            Stream      responseStream     = null;
            var         mediaTypeFormatter = new JsonMediaTypeFormatter();

            mediaTypeFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/plain"));
            try
            {
                var request = (HttpWebRequest)WebRequest.Create(dto.Url);
                request.Credentials = CredentialCache.DefaultCredentials;
                response            = request.GetResponse();
                responseStream      = response.GetResponseStream();
                if (responseStream == null)
                {
                    throw new Exception("No server response");
                }
                var inMemoryStream = new MemoryStream();
                {
                    var count = 0;
                    do
                    {
                        var buffer = new byte[4096];
                        count = responseStream.Read(buffer, 0, 4096);
                        inMemoryStream.Write(buffer, 0, count);
                    } while (responseStream.CanRead && count > 0);

                    string errorMessage;
                    bool   alreadyExists;

                    var segments       = dto.Url.Split('/');
                    var fileName       = segments[segments.Length - 1];
                    var returnFilename = SaveFile(inMemoryStream, PortalSettings, UserInfo, dto.Folder.TextOrEmpty(), dto.Filter.TextOrEmpty(),
                                                  fileName, dto.Overwrite, dto.IsHostMenu, dto.Unzip, out alreadyExists,
                                                  out errorMessage);

                    var root = AppDomain.CurrentDomain.BaseDirectory;
                    returnFilename = returnFilename.Replace(root, "~/");

                    var size = IsImage(returnFilename) ?
                               ImageHeader.GetDimensions(HostingEnvironment.MapPath(returnFilename)) :
                               Size.Empty;

                    /* Response Content Type cannot be application/json
                     * because IE9 with iframe-transport manages the response
                     * as a file download
                     */
                    return(Request.CreateResponse(
                               HttpStatusCode.OK,
                               new UploadDto {
                        AlreadyExists = alreadyExists, Message = errorMessage, Orientation = size.Orientation(), Path = VirtualPathUtility.ToAbsolute(returnFilename)
                    },
                               mediaTypeFormatter,
                               "text/plain"));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateResponse(
                           HttpStatusCode.OK,
                           new UploadDto {
                    AlreadyExists = false, Message = ex.Message
                },
                           mediaTypeFormatter,
                           "text/plain"));
            }
            finally
            {
                if (response != null)
                {
                    response.Close();
                }
                if (responseStream != null)
                {
                    responseStream.Close();
                }
            }
        }