Example #1
0
        public async Task <HttpResponseMessage> PostFormData()
        {
            // Parse the connection string and return a reference to the storage account.
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
                CloudConfigurationManager.GetSetting("BlobStorageConnectionString"));

            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }

            try
            {
                var provider = new MultipartFormDataStreamProvider(Path.GetTempPath());
                await Request.Content.ReadAsMultipartAsync(provider);

                var fileData = provider.FileData.FirstOrDefault();

                var formData      = provider.FormData;
                var containerName = formData["containerName"];

                var blobUrl = SaveBlob(fileData, containerName).Url;

                if (containerName == "books")
                {
                    booksRepo.AddNewBook(formData, blobUrl, UserId);
                }
                else if (containerName == "members")
                {
                    librariesRepo.AddNewLibraryMember(formData, blobUrl, UserId);
                }
            }
            catch (Exception e)
            {
                throw new HttpResponseException(HttpStatusCode.InternalServerError);
            }

            return(new HttpResponseMessage(HttpStatusCode.OK));
        }