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()));
            }
        }
Esempio n. 3
0
        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()));
        }
Esempio n. 4
0
        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()));
            }
        }