public async Task <IHttpActionResult> UploadAsset(string folder) { if (!Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } var blobMultipartProvider = new BlobStorageMultipartProvider(_blobProvider, _tempPath, folder); await Request.Content.ReadAsMultipartAsync(blobMultipartProvider); var retVal = new List <webModel.BlobInfo>(); foreach (var blobInfo in blobMultipartProvider.BlobInfos) { retVal.Add(new webModel.BlobInfo { Name = blobInfo.FileName, Size = blobInfo.Size.ToString(), MimeType = blobInfo.ContentType, RelativeUrl = blobInfo.Key, Url = _urlResolver.GetAbsoluteUrl(blobInfo.Key) }); } return(Ok(retVal.ToArray())); }
public async Task <IHttpActionResult> UploadAsset([FromUri] string folderUrl, [FromUri] string url = null) { if (url == null && !Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } if (url != null) { using (var client = new WebClient()) { var uploadInfo = new UploadStreamInfo { FileByteStream = client.OpenRead(url), FolderName = folderUrl, FileName = HttpUtility.UrlDecode(System.IO.Path.GetFileName(url)) }; var key = _blobProvider.Upload(uploadInfo); var retVal = new webModel.BlobInfo { Name = uploadInfo.FileName, RelativeUrl = key, Url = _urlResolver.GetAbsoluteUrl(key) }; return(Ok(retVal)); } } else { var blobMultipartProvider = new BlobStorageMultipartProvider(_blobProvider, _tempPath, folderUrl); await Request.Content.ReadAsMultipartAsync(blobMultipartProvider); var retVal = new List <webModel.BlobInfo>(); foreach (var blobInfo in blobMultipartProvider.BlobInfos) { retVal.Add(new webModel.BlobInfo { Name = blobInfo.FileName, Size = blobInfo.Size.ToString(), MimeType = blobInfo.ContentType, RelativeUrl = blobInfo.Key, Url = _urlResolver.GetAbsoluteUrl(blobInfo.Key) }); } return(Ok(retVal.ToArray())); } }
public async Task <IHttpActionResult> UploadAsset([FromUri] string folderUrl, [FromUri] string url = null, [FromUri] string name = null) { if (url == null && !Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } var retVal = new List <webModel.BlobInfo>(); if (url != null) { var fileName = name ?? HttpUtility.UrlDecode(Path.GetFileName(url)); var fileUrl = folderUrl + "/" + fileName; using (var client = new WebClient()) using (var blobStream = _blobProvider.OpenWrite(fileUrl)) using (var remoteStream = client.OpenRead(url)) { remoteStream.CopyTo(blobStream); retVal.Add(new webModel.BlobInfo { Name = fileName, RelativeUrl = fileUrl, Url = _urlResolver.GetAbsoluteUrl(fileUrl) }); } } else { var blobMultipartProvider = new BlobStorageMultipartProvider(_blobProvider, _urlResolver, folderUrl); await Request.Content.ReadAsMultipartAsync(blobMultipartProvider); foreach (var blobInfo in blobMultipartProvider.BlobInfos) { retVal.Add(new webModel.BlobInfo { Name = blobInfo.FileName, Size = blobInfo.Size.ToString(), MimeType = blobInfo.ContentType, RelativeUrl = blobInfo.Key, Url = _urlResolver.GetAbsoluteUrl(blobInfo.Key) }); } } return(Ok(retVal.ToArray())); }
public async Task <IHttpActionResult> UploadContent(string contentType, string storeId, [FromUri] string folderUrl, [FromUri] string url = null) { if (url == null && !Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } var storageProvider = _contentStorageProviderFactory(GetContentBasePath(contentType, storeId)); if (url != null) { var fileName = HttpUtility.UrlDecode(System.IO.Path.GetFileName(url)); var fileUrl = folderUrl + "/" + fileName; using (var client = new WebClient()) using (var blobStream = storageProvider.OpenWrite(fileUrl)) using (var remoteStream = client.OpenRead(url)) { remoteStream.CopyTo(blobStream); var retVal = new ContentFile { Name = fileName, Url = _urlResolver.GetAbsoluteUrl(fileUrl) }; return(Ok(retVal)); } } else { var blobMultipartProvider = new BlobStorageMultipartProvider(storageProvider, _urlResolver, folderUrl); await Request.Content.ReadAsMultipartAsync(blobMultipartProvider); var retVal = new List <ContentFile>(); foreach (var blobInfo in blobMultipartProvider.BlobInfos) { retVal.Add(new ContentFile { Name = blobInfo.FileName, Url = _urlResolver.GetAbsoluteUrl(blobInfo.Key) }); } return(Ok(retVal.ToArray())); } }