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(); } } }
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(); } } }
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(); } } }