Example #1
0
        /// <summary>
        ///   Add a photo
        /// </summary>
        /// <returns></returns>
        public async Task <IHttpActionResult> Post()
        {
            // Check if the request contains multipart/form-data.
            if (!Request.Content.IsMimeMultipartContent("form-data"))
            {
                return(BadRequest("Unsupported media type"));
            }
            try
            {
                var provider = new CustomMultipartFormDataStreamProvider(GetTenantUploadFolder());
                //await Request.Content.ReadAsMultipartAsync(provider);
                await Task.Run(async() => await Request.Content.ReadAsMultipartAsync(provider));

                FileUploadResponseModel response = new FileUploadResponseModel();

                var file = provider.FileData.FirstOrDefault();
                if (file != null)
                {
                    var locaFilePath = file.LocalFileName;
                    var fileName     = Path.GetFileName(locaFilePath);
                    var extension    = Path.GetExtension(locaFilePath);

                    var copyFilePath = GetTenantUploadFolder() + @"\\" + Guid.NewGuid() + extension;
                    if (!string.IsNullOrWhiteSpace(locaFilePath))
                    {
                        File.Copy(locaFilePath, copyFilePath);
                    }

                    var fileInfo = new FileInfo(file.LocalFileName);
                    response.FileId           = fileInfo.GetFileNameWithoutExtension();
                    response.OriginalFileName = fileName;
                    response.FileName         = Path.GetFileName(copyFilePath);
                    response.LocalFilePath    = copyFilePath;
                    response.IsSuccess        = true;
                    response.Message          = "Success";

                    File.Delete(locaFilePath);
                }

                return(Ok(response));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.GetBaseException().Message));
            }
        }
Example #2
0
        public JsonResult SaveTempFileAndCrop(HttpPostedFileBase file, ImageCropModel cropArea, string configUniqueName)
        {
            var config = FileUploadDefinitions.GetByUniqueName(configUniqueName);

            if (config == null || !(config is ImageUploadConfig))
            {
                throw new HttpException(400, "Invalid config");
            }

            var         imageConfig = (ImageUploadConfig)config;
            ImageFormat imageFormat;

            using (Image image = imageConfig.ProcessImage(file, cropArea.Rectangle, out imageFormat))
            {
                FileWriterResponse response = FileHelper.SaveFileToTempFolder(config, file, image, imageFormat);
                return(Json(FileUploadResponseModel.FromFileWriterResponse(response)));
            }
        }
Example #3
0
        public async Task <IActionResult> UploadImportFile(IFormFile file, int portalId, int userId,
                                                           ImportType importType)
        {
            List <string>     headers = new List <string>();
            BlobResponseModel blobResponseModel;

            if (file.Length <= 0)
            {
                return(BadRequest("The file is empty."));
            }

            await using (Stream stream = file.OpenReadStream())
            {
                blobResponseModel =
                    await UploadToBlob(
                        $"import-{Enum.GetName(typeof(ImportType), importType)?.ToLower()}-{portalId}-{(userId == -1 ? 0 : userId)}-{Guid.NewGuid()}",
                        file.FileName, stream);
            }

            if (!blobResponseModel.Successful)
            {
                return(BadRequest($"There was an error importing your data: {blobResponseModel.Error}"));
            }

            await using (Stream stream = file.OpenReadStream())
            {
                using StreamReader reader = new StreamReader(stream);
                string columnHeaders = reader.ReadLine();

                if (columnHeaders != null)
                {
                    headers = columnHeaders.Split(',').ToList();
                }
            }

            FileUploadResponseModel response = new FileUploadResponseModel
            {
                ContainerName = blobResponseModel.ContainerName,
                Filename      = blobResponseModel.Filename,
                Headers       = headers
            };

            return(Ok(response));
        }
Example #4
0
        public JsonResult SaveTempFile(HttpPostedFileBase file, string configUniqueName)
        {
            DateTime?lastCheck = (DateTime?)CacheManagement.Get(_cacheName);

            if (!lastCheck.HasValue || DateTime.UtcNow > lastCheck.Value.AddDays(1))
            {
                CacheManagement.Add(_cacheName, DateTime.UtcNow, DateTime.UtcNow.AddDays(1));
                FileHelper.DeleteOldFilesFromTempFolder();
            }

            var config = FileUploadDefinitions.GetByUniqueName(configUniqueName);

            if (config == null)
            {
                throw new HttpException(400, "Invalid config");
            }

            FileWriterResponse response = FileHelper.SaveFileToTempFolder(config, file);

            return(Json(FileUploadResponseModel.FromFileWriterResponse(response)));
        }
Example #5
0
        public async Task <IHttpActionResult> Delete(string fileName)
        {
            if (!FileExists(fileName))
            {
                return(NotFound());
            }

            try
            {
                var filePath = Directory.GetFiles(GetTenantUploadFolder(), fileName)
                               .FirstOrDefault();

                await Task.Factory.StartNew(() =>
                {
                    if (filePath != null)
                    {
                        File.Delete(filePath);
                    }
                });

                var result = new FileUploadResponseModel
                {
                    IsSuccess = true,
                    Message   = fileName + "deleted successfully"
                };
                return(Ok(new { message = result.Message }));
            }
            catch (Exception ex)
            {
                var result = new FileUploadResponseModel
                {
                    IsSuccess = false,
                    Message   = "error deleting fileName " + ex.GetBaseException().Message
                };
                return(BadRequest(result.Message));
            }
        }
        public async Task <IHttpActionResult> UploadLogo()
        {
            if (!Request.Content.IsMimeMultipartContent("form-data"))
            {
                return(BadRequest("Unsupported media type"));
            }
            try
            {
                var provider = new CustomMultipartFormDataStreamProvider(FileHelper.TenantUploadDirectory);
                //await Request.Content.ReadAsMultipartAsync(provider);
                await Task.Run(async() => await Request.Content.ReadAsMultipartAsync(provider));

                FileUploadResponseModel response = new FileUploadResponseModel();

                var file = provider.FileData.FirstOrDefault();
                if (file != null)
                {
                    var locaFilePath = file.LocalFileName;
                    var fileName     = Path.GetFileName(locaFilePath);
                    var extension    = Path.GetExtension(locaFilePath);


                    var fileId       = Guid.NewGuid();
                    var copyFilePath = FileHelper.TenantUploadDirectory + @"\\" + fileId + extension;
                    if (!string.IsNullOrWhiteSpace(locaFilePath))
                    {
                        File.Copy(locaFilePath, copyFilePath);
                    }

                    //var fileInfo = new FileInfo(file.LocalFileName);
                    //using (Image img = Image.FromFile(locaFilePath))
                    //using (Bitmap bmp = new Bitmap(img))
                    //{
                    //    for (int x = 0; x < img.Width; x++)
                    //    {
                    //        for (int y = 0; y < img.Height; y++)
                    //        {
                    //            Color c = bmp.GetPixel(x, y);
                    //            if (c.R == 255 && c.G == 255 && c.B == 255)
                    //                bmp.SetPixel(x, y, Color.FromArgb(0));
                    //        }
                    //    }

                    //    copyFilePath = copyFilePath + ".png";
                    //    bmp.Save(copyFilePath, ImageFormat.Png);
                    //}


                    response.FileId           = Path.GetFileNameWithoutExtension(copyFilePath);
                    response.OriginalFileName = fileName;
                    response.FileName         = Path.GetFileName(copyFilePath);
                    response.FileType         = file.Headers.ContentType;
                    response.LocalFilePath    = FileHelper.TenantReadPath + response.FileName;
                    response.IsSuccess        = true;
                    response.Message          = "Success";

                    if (locaFilePath != null)
                    {
                        File.Delete(locaFilePath);
                    }

                    var company = _service.GetEntityById(User.Identity.GetCompanyId());
                    company.LogoName     = response.OriginalFileName;
                    company.LogoFileType = response.FileType.ToString();
                    company.LogoPath     = response.LocalFilePath;

                    _service.EditAsTenant(company);

                    response.CompanyId = company.Id;
                    response.TenantId  = company.TenantId;
                }


                return(Ok(response));
            }

            catch (Exception ex)
            {
                return(BadRequest(ex.GetBaseException().Message));
            }
        }