public async Task<webModel.BlobInfo[]> UploadAsset(string folder = "tmp") { 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 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) { var fileName = HttpUtility.UrlDecode(System.IO.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); var retVal = new webModel.BlobInfo { Name = fileName, RelativeUrl = fileUrl, Url = _urlResolver.GetAbsoluteUrl(fileUrl) }; return Ok(retVal); } } else { var blobMultipartProvider = new BlobStorageMultipartProvider(_blobProvider, _urlResolver, 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> 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()); } }