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