Esempio n. 1
0
        private async Task <IHttpActionResult> Upload(HttpRequestMessage request, string path, string fileName)
        {
            if (request.Content.Headers.ContentLength > MaxSize)
            {
                return(BadRequest($"Only images less then {MaxSize / 1024} Kb are allowed"));
            }
            var provider = new ImageMultipartFormDataStreamProvider(path);
            var result   = await request.Content.ReadAsMultipartAsync(provider);

            if (result.FileData.Count <= 0)
            {
                return(BadRequest("No files"));
            }

            if (result.FileData.Count > 1)
            {
                return(BadRequest("you can only upload one file"));
            }

            var fileData = result.FileData.First();

            FileInfo fileInfo = new FileInfo(fileData.LocalFileName);

            var isExcel = string.CompareOrdinal(fileData.Headers.ContentType.MediaType, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") == 0;

            if (!isExcel || fileInfo.Extension.StartsWith("xls"))
            {
                return(BadRequest("Only Excel files are allowed"));
            }
            var filePath      = Path.Combine(path, fileData.LocalFileName);
            var imageFileName = fileName + fileInfo.Extension;

            return(Ok(imageFileName));
        }
        private async Task <IHttpActionResult> Upload(HttpRequestMessage request, string path, string imageName)
        {
            if (request.Content.Headers.ContentLength > MaxSize)
            {
                return(BadRequest($"Only images less then {MaxSize / 1024} Kb are allowed"));
            }
            var provider = new ImageMultipartFormDataStreamProvider(path);
            var result   = await request.Content.ReadAsMultipartAsync(provider);

            if (result.FileData.Count <= 0)
            {
                return(BadRequest("No files"));
            }

            if (result.FileData.Count > 1)
            {
                return(BadRequest("you can only upload one file"));
            }

            var            fileData       = result.FileData.First();
            StorageManager storageManager = new StorageManager();
            FileInfo       fileInfo       = new FileInfo(fileData.LocalFileName);

            var isJpeg = string.CompareOrdinal(fileData.Headers.ContentType.MediaType, "image/jpeg") == 0;

            if (!isJpeg || fileInfo.Extension != ".jpg")
            {
                return(BadRequest("Only jpeg images are allowed"));
            }
            var filePath      = Path.Combine(path, fileData.LocalFileName);
            var imageFileName = imageName + fileInfo.Extension;
            var imageUrl      = await storageManager.UploadFromStreamAsync(ContainerName, imageFileName, filePath);

            return(Ok(imageUrl.ToString()));
        }
Esempio n. 3
0
        /// <summary>
        /// This method will actually save the the file to Azure
        /// </summary>
        /// <returns></returns>
        private async Task <FineUpload> ProcessData()
        {
            var fineUpload = new FineUpload();

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

                var storageAccount = CloudStorageAccount.Parse(
                    ConfigurationManager.ConnectionStrings["StorageConnection"].ConnectionString);
                var blobStorage = storageAccount.CreateCloudBlobClient();
                var container   = blobStorage.GetContainerReference(AzureBlobSA.REFUND_FILES_CONTAINER);

                foreach (var fileData in provider.FileData)
                {
                    var value = fileData.Headers.ContentDisposition;
                    var name  = value.Name;
                    var info  = new FileInfo(fileData.LocalFileName);

                    if (name == "\"qqfile\"")
                    {
                        var fileName = info.Name;
                        using (var fileStream = File.OpenRead(fileData.LocalFileName))
                        {
                            var uniqueBlobName = string.Format("{0}/{1}{2}",
                                                               AzureBlobSA.REFUND_FILES_CONTAINER, Guid.NewGuid(), Path.GetExtension(fileName));

                            var blob = blobStorage.GetBlockBlobReference(uniqueBlobName);
                            blob.Properties.ContentType = fileData.Headers.ContentType.MediaType;
                            blob.UploadFromStream(fileStream);
                            fineUpload.newUuid      = blob.Name;
                            fineUpload.preventRetry = true;
                        }
                    }

                    File.Delete(fileData.LocalFileName);
                }
                fineUpload.success = true;
            }
            catch (Exception e)
            {
                fineUpload.success = false;
                fineUpload.error   = e.Message;
            }
            return(fineUpload);
        }