//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)); }
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")); }