Esempio n. 1
0
        //public async void Post([FromBody]string name, [FromBody]string grouping, [FromBody]string color, [FromBody]string longName)
        public async Task <int> Post([FromBody] FileStorageEntity data)
        {
            if (data.DisplayId == Guid.Empty)
            {
                data.DisplayId = Guid.NewGuid();
            }
            var processor = GetAzureProcessor();
            var ret       = await processor.CreateTable("FileStorage");

            return(await processor.AddToTable("FileStorage", data));
        }
Esempio n. 2
0
        public async Task <HttpResponseMessage> Post([FromUri] string cn)
        {
            //container/bucket
            string _groupingUpload = "temp-upload";

            if (!string.IsNullOrEmpty(cn))
            {
                _groupingUpload = CleanContainerName(cn);
            }
            string _groupingUploadThumb       = _groupingUpload + "-thumb";
            string _groupingUploadThumbMedium = _groupingUpload + "-thumb-m";


            //var uploadPath = "";// TempStorage.GetTempDir(id);

            if (Request.Content.IsMimeMultipartContent())
            {
                var processor = GetAzureProcessor();

                ////pluploader chunks
                //var fileWriterProvider = new PlUploadMultipartFileStreamProvider(uploadPath, Guid.NewGuid(), processor);
                //await Request.Content.ReadAsMultipartAsync(fileWriterProvider);

                ////delete all container data first
                //var items = processor.GetListOfContainers();
                //foreach (var item in items) processor.DeleteContainer(item.Name);
                //return Request.CreateResponse(HttpStatusCode.OK);



                var streamProvider = new MultipartMemoryStreamProvider();
                await Request.Content.ReadAsMultipartAsync(streamProvider);

                foreach (HttpContent fileData in streamProvider.Contents)
                {
                    var OriginalFileName = fileData.Headers.ContentDisposition.FileName;
                    var ContentType      = fileData.Headers.ContentType;
                    var ContentLength    = fileData.Headers.ContentLength;

                    if (!string.IsNullOrEmpty(OriginalFileName))
                    {
                        //clean originalfilename
                        OriginalFileName = OriginalFileName.Replace("\"", "");
                        var ofnParts = OriginalFileName.Split("\\".ToCharArray());
                        OriginalFileName = ofnParts.Last();


                        var uniqueId = Guid.NewGuid().ToString();

                        using (var stream = await fileData.ReadAsStreamAsync())
                        {
                            //create containers incase they don't exist
                            processor.CreateContainer(_groupingUpload);
                            processor.CreateContainer(_groupingUploadThumb, true);
                            processor.CreateContainer(_groupingUploadThumbMedium, true);


                            //setup entity for uplading into storage table
                            var uf = new FileStorageEntity(uniqueId, _groupingUpload.ToLower());
                            uf.ContentType      = ContentType.MediaType;
                            uf.Size             = ContentLength.HasValue ? ContentLength.Value : 0;
                            uf.OriginalFileName = OriginalFileName;
                            uf.DisplayId        = Guid.Parse(uniqueId);


                            //metadata (table storage)
                            await processor.AddToTable("FileStorage", uf);

                            //content (blob storage)
                            await processor.UploadBlobIntoContainerAsync(stream, _groupingUpload, uniqueId, OriginalFileName, ContentType.MediaType, false);


                            //thumbnail if applicable
                            var ctmt = ContentType.MediaType.ToLower();
                            if (ctmt.Contains("jpeg") || ctmt.Contains("gif") ||
                                ctmt.Contains("jpg") || ctmt.Contains("png") ||
                                ctmt.Contains("bmp") || ctmt.Contains("tiff"))
                            {
                                stream.Seek(0, SeekOrigin.Begin);
                                using (var img = System.Drawing.Image.FromStream(stream))
                                {
                                    //small
                                    var thumbDimension = ResizeImageForThumb(img.Width, img.Height, _thumbSizeSml, _thumbSizeSml);
                                    using (var thumbnailImage = img.GetThumbnailImage(thumbDimension.Width, thumbDimension.Height, new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero))
                                        using (var imageThumbStream = new MemoryStream())
                                        {
                                            thumbnailImage.Save(imageThumbStream, System.Drawing.Imaging.ImageFormat.Jpeg);
                                            imageThumbStream.Seek(0, SeekOrigin.Begin);
                                            await processor.UploadBlobIntoContainerAsync(imageThumbStream, _groupingUploadThumb, uniqueId, OriginalFileName, "image/jpeg", true);
                                        }

                                    //medium
                                    thumbDimension = ResizeImageForThumb(img.Width, img.Height, _thumbSizeMed, _thumbSizeMed);
                                    using (var thumbnailImage = img.GetThumbnailImage(thumbDimension.Width, thumbDimension.Height, new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero))
                                        using (var imageThumbStream = new MemoryStream())
                                        {
                                            thumbnailImage.Save(imageThumbStream, System.Drawing.Imaging.ImageFormat.Jpeg);
                                            imageThumbStream.Seek(0, SeekOrigin.Begin);
                                            await processor.UploadBlobIntoContainerAsync(imageThumbStream, _groupingUploadThumbMedium, uniqueId, OriginalFileName, "image/jpeg", true);
                                        }
                                }
                            }
                        }
                    }
                }
                return(Request.CreateResponse(HttpStatusCode.OK));
            }
            return(Request.CreateResponse(HttpStatusCode.NotAcceptable, "this request is not properly formated"));
        }